Расширение Chrome получает сообщение во вкладке.chrome.tabs.sendMessage - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу создать расширение 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) {
            });
        });
    }
});

Как видите, я получаю идентификатор вкладки и пытаюсь отправить сообщение на эту вкладку.Но как я могу получить это сообщение в моем скрипте контента?Я использую это, но это не работает:

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

1 Ответ

0 голосов
/ 21 сентября 2018

Мое предлагаемое решение - изменить фоновый скрипт на , чтобы программно внедрить скрипт контента , например:

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) {  //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
            });
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...