Chrome扩展程序:“Chrome.runtime.sendMessage”不工作

pkln4tw6  于 11个月前  发布在  Go
关注(0)|答案(1)|浏览(353)

我目前正在开发一个Chrome扩展程序,如果它在页面的HTML中找到特定的单词,它将关闭我当前打开的标签页。

我的content.js脚本将在打开的标签页的HTML中找到禁用的单词(如果有的话),然后运行以下代码:chrome.runtime.sendMessage({request: "closeTab" })
我的background.js脚本应该会收到以下消息:chrome.runtime.onMessage.addListener(function closeTab(request, sender, sendResponse) {if (request == "closeTab") {//code});
我的content.js脚本中的所有代码都运行正常,并正在发送该消息。尽管如此,background.js不会做任何事情。如果有人能告诉我原因,我将非常感激。

  • 编辑:我不再有之前显示的错误消息。但background.js文件中的代码仍然没有运行。
  • 编辑:为了帮助我采取了控制台的屏幕截图,它看起来像什么. Screenshot of Console
  • 以防万一我留下密码 *
    内容.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"]
    
}


] }的情况

kgqe7b3p

kgqe7b3p1#

Change:
  chrome.runtime.sendMessage("closeTab")};
to:
  chrome.runtime.sendMessage({action:"closeTab"});

Change:
  if (request.from === "closeTab") {
to:
  if (request.action == "closeTab") {

字符串
同时检查content.js中的右括号.

相关问题