无法在另一个消息镀铬扩展名内发送消息

时间:2017-06-15 13:15:45

标签: javascript google-chrome asynchronous google-chrome-extension

我在Chrome扩展程序的后台页面中传递消息时遇到了麻烦。

在内容页面

我发送消息并等待来自后台页面的回复:

chrome.runtime.sendMessage({"name": "Calling"}, function (response) {
    console.log(response);
});

在后台页面

我有一个事件监听器来监听来自内容页面的消息:

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
        if (request.name == "Calling") {
            doTask().then(function (message) {
                sendResponse(message);
            });
            return true; // Make respond asynchronously
        }
    }
);

在“调用”事件监听器内部,我调用返回承诺的函数doTask()

var doTask = function(){
    return new Promise(function (resolve) {
        chrome.runtime.sendMessage({"name": "DoTask"}, function (response) {
            resolve(response);
        });
    });
};

doTask()内,我发送另一条消息“DoTask”,然后等待回复。

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
        if (request.name == "DoTask") {
            var message = "Task has done!";
            sendResponse(message);
            return true; // Make respond asynchronously
        }
    }
);

我希望“任务已完成!”将在内容页面中打印,但什么都没有出现!调试时我意识到“DoTask”事件监听器无法接收任何消息。

这里有什么不对?谢谢。

P / S:我确保所有脚本都注入manifest.json

0 个答案:

没有答案