Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension “如何修复”;Unchecked runtime.lastError:消息端口在收到响应之前关闭;在自制的铬延长?_Google Chrome Extension - Fatal编程技术网

Google chrome extension “如何修复”;Unchecked runtime.lastError:消息端口在收到响应之前关闭;在自制的铬延长?

Google chrome extension “如何修复”;Unchecked runtime.lastError:消息端口在收到响应之前关闭;在自制的铬延长?,google-chrome-extension,Google Chrome Extension,我正在做一些简单的测试来使用content和background.js之间的一次性通信。代码如下。我总是在我的console.log中发现错误“Unchecked runtime.lastError:消息端口在收到响应之前关闭”。在下面的脚本中,我做了两个步骤 第一步。浏览器操作完成后,立即从后台向内容发送消息。 第二步。将消息从内容发送回后台。如果后台收到该消息,则会发出警报 我认为当消息只发送而不接收时会触发错误。但在我的脚本中,这两条消息都收到了。为什么错误仍然发生?我对此感到很困惑。如果

我正在做一些简单的测试来使用content和background.js之间的一次性通信。代码如下。我总是在我的console.log中发现错误“Unchecked runtime.lastError:消息端口在收到响应之前关闭”。在下面的脚本中,我做了两个步骤

第一步。浏览器操作完成后,立即从后台向内容发送消息。 第二步。将消息从内容发送回后台。如果后台收到该消息,则会发出警报

我认为当消息只发送而不接收时会触发错误。但在我的脚本中,这两条消息都收到了。为什么错误仍然发生?我对此感到很困惑。如果有人能告诉我原因或如何解决这个问题,我将非常感激

我也做了一些测试。错误似乎与从内容到背景的消息有关。我应该在脚本中手动关闭或清除端口吗

content.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        if( request.message === "clicked_browser_action" ) {
            console.log('content initial');
            chrome.runtime.sendMessage({joke: "Knock knock",key:"initial from content"}, function(response) {
            });
        }
    }
); 
background.js

//initial 
var tabId;
chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    var activeTab = tabs[0];
    tabId = activeTab.id;
    chrome.tabs.sendMessage(tabId, {"message": "clicked_browser_action"});
  });
});

//receive
chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        if (request.joke == "Knock knock"){
            alert(request.key);
        }
    }
)

在内容脚本的onMessage中使用sendResponse,如中所示,并在回调中使用,而不是在同一示例中使用popup的onMessage。@wOxxOm您的意思是我应该在侦听器“chrome.runtime.onMessage.addListener”中使用“chrome.tabs.sendMessage”吗?我说的是相反的。请参阅我链接的文档中的示例。在内容脚本的onMessage中使用sendResponse(如中所示)和回调,而不是在同一示例中使用popup的onMessage。@wOxxOm您的意思是我应该在侦听器“chrome.runtime.onMessage.addListener”中使用“chrome.tabs.sendMessage”吗?我说的是相反的。请参阅我链接的文档中的示例。