Чтобы лучше описать мою проблему, я создал небольшой пример расширения Chrome, написанного на Dart. Вы можете увидеть код или загрузить расширение на Gist.
Проблема
Этот пример отлично работает в Dartium, но при компиляции в javascript возникает ошибка типа: Uncaught TypeError: undefined is not a function
для строки:
context['chrome']['runtime']['onMessage'].callMethod('addListener', [onMessageListener]);
Как далеко я уже зашел
- Как видно из примера, функции
alert()
илиconsole.log()
черезdart:js
также работают в js-расширении. Значит, это может быть особая проблема с dart2js и добавлением прослушивателей событий? - Также распечатка
context['chrome']['runtime']['onMessage']
показывает правильный объект-событие. (Например:context['console'].callMethod('log', [context['chrome']['runtime']['onMessage']]);
) - Я знаю, что существует пакет chrome pub, но все еще есть ошибка при ответе на полученные сообщения в onMessage. См. также этот вопрос. Использование chrome API напрямую через dart: js было обходным путем, который был хорош в этой версии dart.
Я много играл с кодом, но все приводит к одной и той же ошибке. Теперь у меня нет идей. Надеюсь, сообщество снова поможет мне.
Изменить: я сообщил об этой ошибке на dartbug.com, как предложил Роберт. В любом случае, я все еще открыт для обходного пути или чего-то еще, если кто-то его знает.