onMessage 未在 Chrome 扩展程序上执行

onMessage not being executed on Chrome extension

本文关键字:程序上 执行 扩展 Chrome 未在 onMessage      更新时间:2023-09-26

引用这篇文章,我正在尝试使用executeScript或sendMessage将变量传递给我的内容.js文件。使用 Chrome 开发工具,我看到它正在访问我的内容.js文件,并且它还运行我插入的测试警报,但是当它到达

chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {

完全跳过它。我不确定这里发生了什么?

弹出窗口.js

function search() {
    var name = document.getElementById('txtSearch').value;
    chrome.tabs.executeScript({ file: "jquery.js" }, function () {
        chrome.tabs.executeScript(null, {
            code: 'var name = ' + name + ';'
        }, function () {
            chrome.tabs.executeScript({ file: 'content.js' });
        });
    });
}
document.getElementById('btnSearch').addEventListener('click', search);

或弹出窗口.js使用 sendMessage

function search() {
    var name = document.getElementById('txtSearch').value;
    chrome.tabs.executeScript({ file: "jquery.js" }, function () {
        chrome.tabs.executeScript({ file: 'content.js' }, function () {
            chrome.tabs.sendMessage({ name: name });
        });
    });
}
document.getElementById('btnSearch').addEventListener('click', search);

内容.js

alert('hi');
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
    console.log(message.name);
});

参考我在 SO 上找到的不同答案(找不到它 atm),我缺少将选项卡 ID 传递给内容脚本的函数。

chrome.tabs.query({ active: true }, function (tabs) {
    chrome.tabs.sendMessage(tabs[0].id, {'type': type, 'name': name });
});