external_connectable和Firefox WebExtensions

时间:2016-07-20 17:54:46

标签: firefox-addon

我正在尝试使用新的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"还是没有实施?

我在网上找不到这个:(谢谢

2 个答案:

答案 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