Как передать сообщение из background.js в контент Script и манипулировать DOM? - PullRequest
0 голосов
/ 25 марта 2019

У меня есть прослушиватель смены вкладок в фоновом скрипте, который проверит URL и, соответственно, отправит сообщение скрипту контента для действия DOM. В чем проблема в этом коде?

Я пробовал chrome.runtime. а также chrome.tabs. API. Кроме того, console.log () не работает в content.js.

background.js

chrome.tabs.onActivated.addListener(function(activeInfo) {
    chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
        let arr = tabs[0].url.split('/');
        let url = arr[0] + "//" + arr[2];
        if(url=="https://youtube.com"){
            chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
                chrome.tabs.sendMessage(
                    tabs[0].id, {action: "open_dialog_box"}, function(response) {console.log(response)}
                );  
            });
        }
    });
});

content.js

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
    console.log(request);
    if (request.msg === "youtube_action") {
        //console.log(request.data.subject)
        alert("kdjfnodf");
    }
    return true;
});

manifest.json

{
    "manifest_version" : 3,
    "name" : "Play",
    "description" : "Play",
    "version": "2",

    "browser_action" : {
        "default_title" : "Play-Pause",
        "default_popup" : "popup.html"
    },
    "permissions" : [
        "activeTab",
        "tabs",
        "background"
    ],
    "content_scripts": [{
        "matches": ["http://*/*"],
        "js": [
          "content.js"
        ]
    }],
    "background" : {
        "scripts": ["background.js"],
        "persistent": false
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...