chrome.tabs.sendMessage не будет работать в асинхронном режиме, тогда функция - PullRequest
0 голосов
/ 11 октября 2018

в фоновом скрипте

function new_url_listener(tabId, info, tab) {

    if(info.url){
        get_template(info.url).then(function(template){
            console.log(template);
            if (template){
                chrome.tabs.sendMessage(tab.id, {test:"test"}, function(response) {    
                    console.log(response);
                });
            }        
        })
    }
}



chrome.tabs.onUpdated.addListener(new_url_listener);

в content.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
      console.log(sender.tab ?
                  "from a content script:" + sender.tab.url :
                  "from the extension");
      if (request.greeting == "hello")
        sendResponse({farewell: "goodbye"});
});

отправляет сообщение, когда chrome.tabs.sendMessage не содержится в get_template.then ()вызов, но мне нужно иметь возможность отправить переменную шаблона в скрипт содержимого

почему он не отправляет в течение вызова тогда?

get_template делает вызов API и получает JSONназад как переменная шаблона

1 Ответ

0 голосов
/ 12 октября 2018
"content_scripts": [
    {
        "matches": ["http://*/*", "https://*/*"],
        "js": [
            "contentscript.js"
        ],
        "run_at": "document_start"

    }
],

Мне пришлось добавить «run_at»: «document_start», и теперь это работает

...