为了更好地描述我的问题,我创建了一个用 Dart 编写的 chrome 扩展的小示例。您可以在Gist上查看代码或下载扩展程序。
问题
此示例在 Dartium 中运行良好,但是当编译为 javascript 时会发生类型错误:Uncaught TypeError: undefined is not a function
对于以下行:
context['chrome']['runtime']['onMessage'].callMethod('addListener', [onMessageListener]);
我已经走了多远
- 正如您在示例中看到的那样,函数
alert()
或console.log()
viadart:js
也在 js-extension 中工作。所以这可能是 dart2js 和添加事件监听器的一个特殊问题? - 打印出来也
context['chrome']['runtime']['onMessage']
显示了正确的事件对象。(例如context['console'].callMethod('log', [context['chrome']['runtime']['onMessage']]);
:) - 我知道存在一个 chrome pub 包,但是在响应 onMessage 中收到的消息时仍然存在错误。另请参阅此问题。直接通过 dart:js 使用 chrome api 是该 dart 版本的解决方法。
我玩了很多代码,但都导致相同的错误。现在我没有想法了。希望社区能再次帮助我。
编辑: 我现在按照罗伯特的建议在dartbug.com上报告了这个错误。无论如何,如果有人知道,我仍然愿意寻求解决方法或其他方法。