gpt4 book ai didi

google-chrome-extension - Dart Chrome 扩展 : Listen to chrome api events

转载 作者:行者123 更新时间:2023-12-03 03:50:51 27 4
gpt4 key购买 nike

为了更好地描述我的问题,我创建了一个用 Dart 编写的 chrome 扩展的小示例。您可以在Gist上查看代码或下载扩展程序.

问题

这个示例在 Dartium 中运行良好,但是当编译为 javascript 时,会出现类型错误:Uncaught TypeError: undefined is not a function 对于以下行:

context['chrome']['runtime']['onMessage'].callMethod('addListener', [onMessageListener]);

我已经走了多远

  • 正如您在示例中看到的,通过 dart:js 的函数 alert()console.log() 也可以在js 扩展名。 所以这可能是 dart2js 和添加事件监听器的一个特殊问题?
  • 同时打印 context['chrome']['runtime']['onMessage'] 显示正确的事件对象。 (例如:context['console'].callMethod('log', [context['chrome']['runtime']['onMessage']]);)
  • 我知道有一个chrome pub包,但是在onMessage中响应收到的消息时仍然存在错误。另请参阅此question 。直接通过 dart:js 使用 chrome api 是解决方法,在该 dart 版本中效果很好。
<小时/>

我对代码进行了很多操作,但都导致了相同的错误。现在我没有主意了。希望社区能够再次帮助我。

编辑:我现在已在 dartbug.com 上报告了此错误正如罗伯特建议的那样。不管怎样,如果有人知道的话,我仍然愿意寻求解决方法或其他方法。

最佳答案

所以你的例子对我来说效果很好:

//Placed in web/

import 'dart:js';

void main() {
//This doesnt work in js
context['chrome']['runtime']['onMessage'].callMethod('addListener', [onMessageListener]);
context['chrome']['runtime'].callMethod('sendMessage', ['someMessage']);
context['chrome']['runtime'].callMethod('sendMessage', [null, 'someMessage']);
}


void onMessageListener(message, sender, sendResponse) {
print("test");
print(message);
}

输出

test (:1)
someMessage (:1)
test (:1)
someMessage (:1)

问候,罗伯特

//抱歉错过了您遇到的异常

您应该在 www.dartbug.com 上提交有关此问题的错误

问候,罗伯特

//现在你应该可以使用 chrome 包了。它在这里工作正常:

import 'dart:js';
import 'package:chrome/chrome_ext.dart' as chrome;

void onMessageListener(message, sender, sendResponse) {
print("test");
print(message);
}

void main() {
chrome.runtime.onMessage.listen((chrome.OnMessageEvent event) {
print(event.message);
});

JsObject runtime = context['chrome']['runtime'];
runtime.callMethod('sendMessage', ['someMessage']);
runtime.callMethod('sendMessage', [null, 'someMessage']);
}

问候,罗伯特

关于google-chrome-extension - Dart Chrome 扩展 : Listen to chrome api events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25631383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com