立即调用Chrome运行时API回调

时间:2016-06-16 20:53:50

标签: google-chrome-extension google-chrome-devtools

我在Chrome扩展程序中有以下代码

devtoolsPanel.js

chrome.runtime.sendMessage({
        name: 'executeScript',
        tabId: chrome.devtools.inspectedWindow.tabId
    }, function(response) { 
       if(response != undefined){
           console.log(response.message);         
       }
   });

background.js

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    try {
        if (message.name == "executeScript") { 
            chrome.tabs.executeScript(message.tabId, {
                    code: 'document.body.style.backgroundColor="red"'
                }, function() {                
                sendResponse({"message":"script executed"});    
            });            
        }
    } catch (e) {
        sendResponse({
            "exceptionD": "" + e
        });
    }
});

我希望sendResponse()在执行内容脚本后被调用,但在chrome.tabs.executeScript()之后立即调用它,并且未定义。

我在内容脚本中使用的任何运行时API都会发生这种情况。我也尝试使用Localstore API,同样的事情发生了

例如在我的contentscript.js中我有以下代码

function readOptions(sendResponse) {  
    var options = {};
    chrome.storage.local.get(null, function(items) {
        sendResponse(items);
    });
}

即使在这种情况下,在使用undefined的chrome.storage.local.get()之后立即调用sendResponse()。

有人可以告诉我这里发生了什么。

0 个答案:

没有答案