Chrome扩展程序|如何正确组织长期连接?

时间:2016-06-03 10:23:31

标签: javascript google-chrome messaging

我正在构建Chrome扩展程序,它包含两个文件:内容脚本和后台脚本。当页面上发生某些事件时,我的内容脚本会监听它们并通过向后台脚本发送消息来做出反应。内容文件中的代码提取:

var port = chrome.runtime.connect({name: "knockknock"});
    port.onMessage.addListener(function(msg) {

    });
...
function onMouseUp () {
   ...
   port.postMessage({message: important});
   ...
}

背景代码摘录:

chrome.runtime.onConnect.addListener(function(port) {
    port.onMessage.addListener(function(msg) {
        if (msg.message)
            doSomething(msg.message);
    });
});

这样就行了,我的背景会收到消息。

然后它必须创建自己的消息并将其发送到内容脚本。这就是问题所在。在我的doSomething()函数中,我还有一个函数doSomethingMore(),我也传递了这个函数。由于此函数位于doSomething()函数内,doSomething()函数位于port.onMessage.addListener(function(msg) {} 内,据我所知,此类port.postMessage({newMessage: importantToo});之类的代码必须正常工作,但事实并非如此。

chrome.runtime.onConnect.addListener(function(port) {
    port.onMessage.addListener(function(msg) {
        if (msg.message)
            doSomething(msg.message);
    });
});

function doSomething(mes) {
    ...
    doSomethingMOre(mes);
}
function doSomethingMore(message) {
    ...
}

我想打开一个新端口是一个坏主意。但也许有人知道如何正确传递我的信息? 非常感谢提前!

0 个答案:

没有答案