当前位置: 首页 > 面试题库 >

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

长孙绍辉
2023-03-14
问题内容

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

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,所以我不能使用它。


问题答案:

sendMessage并且onRequest不兼容

如果您需要支持 Chrome 19及更早版本 ,请使用 onRequestsendRequest

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    // Warning: Chrome 19- [receiver]
});
chrome.extension.sendRequest(message, optional_sendResponse);

对于 Chrome 20-25 ,请使用和:chrome.extension. **onMessage**``chrome.extension. **sendMessage**

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
    // Chrome 20+
});
chrome.extension.sendMessage(message, optional_sendResponse);

对于 Chrome 26+ ,请使用和。chrome **.runtime.** onMessagechrome **.runtime.** sendMessage

注意:从Chrome 26开始,仍支持不推荐使用的方法,尽管未记录。如果有机会,请更新您的扩展程序以使用新方法,以确保您的扩展程序将来仍然可以使用。



 类似资料:
  • 在我的Node/Express/React应用程序的每个页面加载的Chrome Dev Tools控制台中,我都有以下错误: 未检查的运行时间。LastError:无法建立连接。接收端不存在

  • 问题内容: 我正在构建一个Chrome扩展程序,该扩展程序仅适用于我工作的公司内部的人员。该扩展需要输入-可以通过对共享的MySQL DB服务器的简单查询生成输入(所有员工都可以以只读权限访问该服务器)。 问题是-由于扩展是所有客户端(主要是Javascript)-访问数据库和运行查询的最简单方法是什么?我是否必须创建一个针对扩展名的php / java(/ …)服务? 问题答案: 您必须创建一个

  • 我正在使用maven项目运行selenium测试,但是当我运行测试文件时,我收到了错误:无法连接到二进制FirefoxBinary(C:\Program Files(x86)\Mozilla Firefox\Firefox)。在端口7055上。它打开FF an的空白页,然后测试结果抛出错误: 这些是我的文件: 我有FireFox 51.0和selenium-java 2.45.0(jar)。

  • 我正在尝试从kafka中的主题将数据插入postgres数据库。我正在使用以下命令加载 sink-quick start-MySQL . properties如下 我得到的错误是 Postgres jar文件已经在文件夹中。有人能提出建议吗?

  • 我在AngularUI视图中使用jsPlumb社区版时遇到问题。 我可以创建可拖动的元素,但我无法使用jsPlumb.connect将它们连接起来,因为“无法建立连接-源不存在”而失败。 我试图通过ID、angular.element选择元素,但这两种方法都不起作用。 有人对此有异议吗?如何在angular ui视图中使元素与jsPlumb连接? 感谢回复:-)

  • 我收到一个错误:无法连接到端口7055上的主机127.0.0.1 当我尝试在ubuntu服务器上用firefox运行selenium时。 谁能帮忙吗? 我有硒版2.53