提问人:Benroke 提问时间:11/11/2023 最后编辑:user229044Benroke 更新时间:11/18/2023 访问量:106
Chrome扩展程序:“chrome.runtime.sendMessage”不起作用
Chrome Extension : "chrome.runtime.sendMessage" Is Not Working
问:
我目前正在开发一个 Chrome 扩展程序,如果它在页面的 HTML 中找到特定单词,它将关闭我当前打开的选项卡。
我的内容 .js 脚本将在我打开的选项卡的 HTML 中找到禁止的单词(如果有的话),然后运行以下代码:chrome.runtime.sendMessage({request: "closeTab" })
我的背景 .js 脚本应该收到以下消息:chrome.runtime.onMessage.addListener(function closeTab(request, sender, sendResponse) {if (request == "closeTab") {//code});
我的内容 .js 脚本中的所有代码都运行正常并正在发送该消息。尽管如此,后台 .js 不会做任何事情。如果有人能告诉我原因,我将不胜感激。
*编辑:我不再有之前显示的错误消息。但是后台 .js 文件中的代码仍未运行。
*编辑:为了提供帮助,我截取了控制台的屏幕截图及其外观。控制台屏幕截图
以防万一你需要它,我会留下代码:
内容 .js
// content.js
const forbiddenText = "cheese";
//Program that looks for forbidden text
function checkForForbiddenText() {
console.log("Checking for Forbidden Text.....");
const bodyText = document.body.innerText;
if (bodyText.includes(forbiddenText)) {
console.log("Forbidden text found! Closing the tab...");
chrome.runtime.sendMessage("closeTab")};
console.log(chrome.runtime.sendMessage("closeTab"));
}
// Run the checkForForbiddenText function when the page is fully loaded
window.addEventListener("load", checkForForbiddenText);
// background.js
chrome.runtime.onMessage.addListener(function closeTab(request, sender, sendResponse) {
if (request.from === "closeTab") {
// Close the current tab
console.log("Background Running.....");
chrome.tabs.remove(sender.tab.id)
console.log("Tab closed");
}
});
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
// Add any other logic you need for tab updates
console.log("Tab updated:", changeInfo);
});
manifest.json
{
"manifest_version": 3,
"name": "Test Blocker",
"version": "1",
"permissions": [
"tabs",
"activeTab"
],
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
] }
答:
0赞
Escape75
11/18/2023
#1
Change:
chrome.runtime.sendMessage("closeTab")};
to:
chrome.runtime.sendMessage({action:"closeTab"});
Change:
if (request.from === "closeTab") {
to:
if (request.action == "closeTab") {
还要检查 content.js 中的右大括号...
评论
request
from
request
from