“尝试使用断开连接的端口对象”,同时将邮件从内容发送到 Chrome 扩展程序中的弹出窗口
"Attempting to use a disconnected port object" while sending message from content to popup in Chrome extension
所以,我需要将消息从弹出窗口传递到内容,反之亦然。目前这是我现在正在做的事情,但这并不能正常工作:
manifest.json:
{
// Required
"manifest_version": 2,
"name": "Extension name",
"version": "0.1",
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["content.js"]
}
],
"browser_action" : {
"default_title" : "Extension name",
"default_popup" : "popup.html"
},
"permissions": [
"tabs",
"*://*/*",
"contextMenus"
]
}
弹出窗口.js
var port = "";
window.onload = function()
{
document.getElementById("captureImage").onclick = captureImage;
}
function captureImage(isBig = true)
{
chrome.tabs.query({'active': true}, function (tabs) {
port = chrome.tabs.connect(tabs[0].id, {name: "Besada"});
port.onMessage.addListener(function(msg) {
alert(msg.message);
});
port.postMessage({message: "getCoords"});
});
}
和内容.js
chrome.runtime.onConnect.addListener(function(port){
port.onMessage.addListener(function(msg) {
});
port.postMessage({message: "hello!"}); // this message I receive
document.onmouseup = function(e) {
port.postMessage({message: "hello!"}); // this message produces an error
};
});
我需要的是当用户释放鼠标左键时发送消息。发生的情况是:当我单击popup.html
中的按钮时,会显示带有文本"Hello"的警报,但是当我在此之后单击页面中的任何位置时,我收到错误:Uncaught Error: Attempting to use a disconnected port object
做错了什么,我该如何解决这个问题?
我猜当我单击页面时弹出窗口关闭时端口正在断开连接,但我对此不太确定。
当您单击其他地方时,弹出窗口将不再作为文档存在。这就像一个已经关闭的选项卡。因此,不再有任何可交流的内容。
修复它的正确方法是与背景页面通信,或使用非易失性chrome.storage
。然后,当弹出窗口打开时,您可以使用任一信息源来显示内容。
相关文章:
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- Chrome应用程序调整窗口大小保持纵横比
- Chrome.downloads.download在Chrome应用程序中
- 如何在Chrome中找到JSON后将其放入我的应用程序's开发人员工具
- Google Chrome扩展程序可以检测所有脚本何时加载完成吗
- Blueimp文件上传程序-Chrome文件夹上传限制
- chrome.serial在chrome打包应用程序中不可用
- 无法在Chrome(打包)应用程序上检测到ESC按钮(全屏显示时)
- Chrome应用程序在全屏中创建新窗口-html元素不是全高的
- Chrome没有加载最新版本的web工作程序脚本(运行缓存版本)
- 如何在ChromeOS上从Chrome应用程序配对新的蓝牙设备
- 通过chrome后台扩展或后台应用程序访问用户麦克风
- 为什么不'我的扩展程序不会出现在Chrome网上商店的搜索结果中
- Chrome扩展程序将所有链接替换为略微修改的版本
- 用Chrome检测Windows8+中的自定义协议处理程序
- 在Chrome和Safari中启动Angular JS应用程序的差异
- 在 Chrome 扩展程序中创建自定义事件的最惯用方式
- Chrome APP/扩展程序从网址下载文件
- 使用多功能框在 chrome 扩展程序中包含内联自动填充功能的任何方法
- Chrome 扩展程序在后台与页面(不在标签页中)交互