chrome.tabs.sendRequest:“端口错误:无法建立连接。接收端不存在。”

时间:2012-07-04 13:12:59

标签: javascript google-chrome-extension

我正在开发Google Chrome扩展程序,这会产生我无法解决的错误。

我的manifest.json看起来像这样:

{
    "name": "my extension",
    "version": "1.0",
    "background_page": "background.html",
    "permissions": [
        "tabs",
        "<all_urls>"
    ],
    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": ["content.js"],
            "all_frames": true
        }
    ]
}

background.html尝试与content.js交谈:

<script>
chrome.tabs.onUpdated.addListener
(
    function(tabId, changeInfo) 
    { 
        chrome.tabs.sendRequest(tabId, {action : 'getMyValue'}, function(output) {
            console.log(output);
        });
    }
);
</script>

最后,content.js:

chrome.extension.onRequest.addListener(function(request, sender, callback)
{
    if (request.action == 'getMyValue')
    {    
        callback('test');
    }
});

开发者工具控制台打印: “端口错误:无法建立连接。接收端不存在。”在第232行的“miscellaneous_bindings”中。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

选项卡更新时

chrome.tabs.onUpdated运行。开发工具,铬(扩展)页面等也包括在内。要消除错误,您必须过滤无法访问的网址。

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo) {
    // Example: allow http:, https: and file:
    if (changeInfo.status === 'complete' &&
       /^(https?|file):/.test(changeInfo.url)) {
        chrome.tabs.sendRequest(tabId, {action: 'getMyValue'}, function(output) {
            console.log(output);
        });
    }
});