chrome.tabs.sendMessage 不向内容脚本发送消息

时间:2021-02-03 11:16:54

标签: javascript google-chrome google-chrome-extension

我正在尝试将一些数据从运行时 (background.js) 发送回我的内容脚本。出于某种原因,它对我不起作用。这是我的代码:

ma​​nifest.json

    "permissions": [
        "activeTab",
        "tabs",
        "*://*.mysite.com/*"
    ],
    "background": {
        "scripts": ["background.js"],
        "persistent": true
    },
    "content_scripts":[
        {
            "matches": ["*://*.mysite.com/*"],
            "js": ["script.js"]
        }
    ],

background.js

function sendToActiveTab(type, message) {
    chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
        chrome.tabs.sendMessage(tabs[0].id, { type: type, message: message });
    })
}

chrome.runtime.onMessage.addListener(
    (request, sender, sendResponse) => {
        if (request) {
            //do some stuff here
            sendToActiveTab('type', 'message');
        }
    }
)

script.js

document.write('hello');
var params = new URLSearchParams(window.location.search);

chrome.runtime.onMessage.addListener(
    (request, sender, sendResponse) => {
        if (request) {
            //do some stuff here
        }
    }
)

if (params.get('someParam')) {
    chrome.runtime.sendMessage(
        {
            example: 'data'
        }
    )
} else {
    //do some stuff here
}

这是我尝试过的:

  • 在 background.js addListener 和 scripts.js addListener 中返回 true
  • 在background.js addListener & scripts.js addListener中返回Promise
  • 我检查过 - chrome.tabs.query 返回了正确的选项卡,那里的一切看起来都不错(尽管此选项卡的状态是“正在加载”)

我已经浏览了许多在线链接,但仍然找不到适合我的解决方案。我将不胜感激!

0 个答案:

没有答案