猿问

Chrome扩展程序:端口错误:无法建立连接。接收端不存在。

尝试在内容脚本和后台脚本之间进行通信时,出现以下错误:


Port error: Could not establish connection. Receiving end does not exist.

Error in event handler for 'undefined': Cannot read property 'message' of undefined       

TypeError: Cannot read property 'message' of undefined

background.js


function onRequest(request, sender, callbackFunction) {

    console.log("Me (BS) became this Message:" + request.message);

    sendResponse({message: request.message})

};

chrome.extension.onRequest.addListener(onRequest);

streamcloud.js


function contactBackground(nachricht){

    chrome.extension.sendMessage({message: nachricht}, function(response) {

        console.log("The Background Script got the following Message: " + response.message);

    });

}

和我的manifest.json


{

  "name": "InstantWatch - Dev",

  "manifest_version": 2,

  "version": "0.7",

  "permissions": ["tabs", "http://*/", "https://*/"],

  "background": {

    "scripts": ["background.js"]

  },  

  "browser_action": {

    "default_title": "InstantWatch",

    "default_icon" : "icon.ico"

  },

  "content_scripts": [

    {

      "matches": ["http://*/*", "http://*/*"],

      "js": ["jquery.js", "streamcloud.js"]

    }

  ]

}

我找到了添加一个background_page:“ background.html”和一个空白background.html的解决方案,但是由于manifest_version:2后不支持background_page,所以我不能使用它。


湖上湖
浏览 3440回答 2
2回答

红颜莎娜

sendMessage并且onRequest是不兼容。如果您需要支持Chrome 19及更早版本,请使用onRequest和sendRequest:chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {    // Warning: Chrome 19- [receiver]});chrome.extension.sendRequest(message, optional_sendResponse);对于Chrome 20-25,请使用和:chrome.extension.onMessagechrome.extension.sendMessagechrome.extension.onMessage.addListener(function(request, sender, sendResponse) {    // Chrome 20+});chrome.extension.sendMessage(message, optional_sendResponse);对于Chrome 26+,请使用和。chrome.runtime.onMessagechrome.runtime.sendMessage注意:从Chrome 26开始,仍支持不推荐使用的方法,尽管未记录。如果有机会,请更新您的扩展程序以使用新方法,以确保您的扩展程序将来仍然可以使用。

守着星空守着你

代替chrome.extension.onRequest.addListener(onRequest);采用chrome.extension.onMessage.addListener(onRequest);由于您使用的是sendMessage而不是sendRequest。邮件解析已在新版本的Chrome中更新。sendRequest和onRequest已被弃用。建议与sendMessage和onMessage一起使用。请参阅docs,以获取Content Script和Background之间的消息解析。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答