我正在尝试使用新的API WebExtension将Chrome扩展程序转换为Firefox。
除了在网页中使用chrome.runtime.sendMessage()之外,一切正常。目标是与插件通信并传递一些数据。
为此,我正在使用属性" external_connectable"如此处所写:can-a-site-invoke-a-browser-extension
background.js
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
sendResponse({
success: true,
message: 'ok'
});
return true; // Bug chrome, close channel otherwise
});
在网页
chrome.runtime.sendMessage(EXTENSION_ID, {type: 'show', data: 'test'}, function(response) {
if (response.success && !response.success) {
console.log(response.message);
}
});
在Chrome中,通讯工作正常,但在Firefox中,网页中执行的代码无法正常工作:" chrome未定义"。
是否还有另外一个var而不是" chrome"还是没有实施?
我在网上找不到这个:(谢谢
答案 0 :(得分:3)
Web扩展不支持external_connectable网站脚本,但您可以在网站脚本和扩展脚本之间进行通信,如本示例所示 https://github.com/mdn/webextensions-examples/tree/master/page-to-extension-messaging
答案 1 :(得分:0)
尝试使用WebExtension API和#34;浏览器"命名空间
browser.runtime.sendMessage(...)
有关mozilla开发的所有可用API https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#WebExtension_APIs