我正在尝试将我的Chrome扩展程序转换为FireFox插件。我现在唯一的问题是在我的网页和后台脚本之间进行通信。

在Chrome中,这就是我所做的:

background.js

chrome.runtime.onMessageExternal.addListener(function(request)
{
    if (request.hello) { console.log('hello received'); }
});

网页
chrome.runtime.sendMessage(ChromeExtId, {hello: 1});

我看到FireFox还不支持onMessageExternal,所以我现在完全不知道如何处理这种情况。

任何帮助将不胜感激。

最佳答案

您可以通过内容脚本与网页中的background.js进行通信。尝试这个:

background.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        if (request.hello) {
            console.log('hello received');
        }
    });

内容脚本
var port = chrome.runtime.connect();

window.addEventListener("message", function(event) {

    if (event.source != window)
        return;

    if (event.data.type && (event.data.type == "FROM_PAGE")) {
        console.log("Content script received: " + event.data.text);
        chrome.runtime.sendMessage({
            hello: 1
        });
    }
}, false);

网页
window.postMessage({ type: "FROM_PAGE", text: "Hello from the webpage!" }, "*");

09-11 19:04
查看更多