0

我想创建一个 chrome 扩展,可以这样做:

在我的 popup.html 我这样做:

$("#openLink").click(function () {
            chrome.runtime.sendMessage({greeting: "GetURL"},
                function (response) {
                });
});

在此之后,我单击此按钮,我收到此消息并在此处创建一个新选项卡:(background.js)

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
    if (request.greeting === "GetURL") {
        var tabURL = "Not set yet";
        chrome.tabs.create({
            url: "http://google.de"
        }, function (tab) {
            //chrome.tabs.sendMessage(tab.id, {greeting: "hello"});
            chrome.tabs.sendMessage(tab.id, {greeting: "hello"}, function (response) {
            });
        });
    }
});

如您所见,我得到了标签 ID 并尝试向该标签发送消息。但是如何在我的内容脚本中获取该消息?我用这个,但它不起作用:

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
        alert('s');
        console.log('s');
    });
4

1 回答 1

1

我提出的解决方案是修改您的后台脚本以编程方式注入内容脚本,例如:

背景.js

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
    if (request.greeting === "GetURL") {
        var tabURL = "Not set yet";
        chrome.tabs.create({url: 'http://google.de'}, function (tab) {  //create tab
            chrome.tabs.executeScript(tab.id, {file: 'content.js'}, function(){  //inject content script
                chrome.tabs.sendMessage(tab.id, {greeting: "hello"});  //send message to content script
            });
        });
    }
});
于 2018-09-21T13:35:34.703 回答