gpt4 book ai didi

javascript - Chrome 扩展选项卡从后台向 contentscript 错误发送消息

转载 作者:行者123 更新时间:2023-11-29 14:55:43 25 4
gpt4 key购买 nike

contentscript.js

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});

背景.js

chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
});

这有时有效,有时无效。

不起作用的情况:

1) 当我重新加载扩展程序并单击现有选项卡上的扩展程序图标时2) 当我在 background.js 中添加断点时

有效的案例:

1) 当我重新加载扩展并重新加载/加载新选项卡时,没有在 background.js 中添加断点

抛出的错误通常是:

Port: Could not establish connection. Receiving end does not exist. lastError:29
Error in event handler for 'undefined': Cannot read property 'farewell' of undefined TypeError: Cannot read property 'farewell' of undefined
at chrome-extension://glbcapgiojbbnjhngjdmoglaamjbjjak/background.js:16:28
at <error: illegal access>
at Event.dispatchToListener (event_bindings:356:21)
at Event.dispatch_ (event_bindings:342:27)
at Event.dispatch (event_bindings:362:17)
at Object.chromeHidden.Port.dispatchOnDisconnect (miscellaneous_bindings:258:27)

任何人都可以阐明这一点吗?我发现特别奇怪的是断点会导致它失败(几乎就像暂停 background.js 会导致事件监听器死掉一样)

最佳答案

结果在background.js中设置断点后,tabs对象变成了:

0: Object
active: true
favIconUrl: ""
highlighted: true
id: 20
incognito: false
index: 0
pinned: false
selected: true
status: "complete"
title: "Developer Tools - chrome-extension://glbcapgiojbbnjhngjdmoglaamjbjjak/_generated_background_page.html"
url: "chrome-devtools://devtools/devtools.html dockSide=right&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)"
windowId: 19

事件监听器在不同的选项卡中,因此“接收端不存在”。话虽如此,我需要找出一种方法将消息发送到正确的选项卡(我还使用 oauth2 进行了一些重定向,因此它也会混淆选项卡选择)。

关于javascript - Chrome 扩展选项卡从后台向 contentscript 错误发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18293160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com