安装或升级我正在处理的Chrome扩展程序后,不会重新注入内容脚本(在清单中指定),因此需要页面刷新才能使扩展能够正常工作.有没有办法强制脚本再次注入?
我相信我可以通过从清单中删除它们然后处理在后台页面中注入哪些页面来以编程方式再次注入它们,但这不是一个好的解决方案.
我不想自动刷新用户的标签,因为这可能会丢失一些数据.安装或升级扩展时,Safari会自动刷新所有页面.
我在 background.js 中发现“未捕获(承诺中)错误:侦听器通过返回 true 指示异步响应,但消息通道在收到响应之前已关闭”错误。我的 chrome 扩展可以工作,但开发工具在 background.js 上显示很多此类错误
我最近将 chrome 扩展从 Manifest V2 迁移到 Manifest V3,从那时起我发现了错误。
这是错误似乎产生的地方:
const browser = chrome || browser;
// Listen for messages from content script
browser.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
var frameId = sender.frameId || 0;
if (request.type == "connect") {
connect(sender.tab, frameId);
sendResponse({ success: true });
} else if (request.type == "disconnect") {
disconnect(sender.tab, frameId);
sendResponse({ success: true });
} else if (request.type == "send") {
sendNativeMessage(request.data, sender.tab);
document.addEventListener('nativeMessage',
function …Run Code Online (Sandbox Code Playgroud) javascript google-chrome-extension promise chrome-native-messaging chrome-extension-manifest-v3
我尝试访问chrome.storage.session内容脚本中存储的信息,但浏览器不断通知我“不允许从此上下文访问存储”,即使我启用了“存储”manifest.json
在后台脚本中获取一些数据后,我存储接收到的数据
chrome.storage.session.set({"data": data});
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过运行以下行在内容脚本中访问它时:
chrome.storage.session.get(["data"],function(data){console.log(data)})
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Uncaught TypeError: Cannot read properties of undefined (reading 'session')
Run Code Online (Sandbox Code Playgroud)
但是,当我在后台脚本中运行完全相同的命令时,我能够检索数据。
我还确保我在我的manifest.json. 为什么会发生这种情况?
非常感谢!
我正在将一些图像从我的 chrome 扩展文件夹之一检索到网站 DOM,每次我重新加载扩展时,我都会收到“扩展上下文无效”错误。当我执行“chrome.storage.local.set”时也会发生同样的事情。
做了一些研究,我意识到这个错误与这个答案中很好解释的事实有关,但由于我没有在我的内容脚本和 background.js 之间传递消息,我想知道为什么会发生这种情况。
这是我的脚本的一部分(通过 popup.js 中的 chrome.tabs.executeScript 注入),在那里我遇到了错误,我基本上是将图像从我的扩展文件夹之一注入到网站 DOM:
for (let k = 0; k < incomingChatTags.length; k++) {
let normalHolderTag = $(incomingChatTags[k]).text().toLowerCase();
switch (normalHolderTag) {
case "vip":
$(incomingChatTags[k]).addClass("ce-vip");
priorityVal += 300;
break;
case "rg":
$(incomingChatTags[k]).addClass("ce-rg");
priorityVal += 240;
break;
case "accountclosure":
$(incomingChatTags[k]).addClass("ce-accountclosure");
priorityVal += 200;
break;
case "21com":
let logo21 = chrome.extension.getURL("/images/21_thumb.png");
$(incomingChatTags[k]).html('<img src="' + logo21 + '" />');
$(incomingChatTags[k]).addClass("ce-tag-logo");
break;
case "caxino":
//the console shows the error here and not …Run Code Online (Sandbox Code Playgroud)