2016-08-17 6 views
0

В chrome extension, я пытаюсь отправить сообщение из фонового скрипта в скрипт контента. Я не получаю сообщения в сценарии содержимого. Где идет не так? Вот что background.jschrome.runtime.onMessage.addListener не работает в скрипте содержимого

function createAlarm() { 
    chrome.alarms.create('bookcab', { 
      periodInMinutes: 1 
    }); 
} 

chrome.alarms.onAlarm.addListener(function(alarm) { 
    if (alarm.name === 'bookcab') { 
     var url = 'http://cab/'; 
     chrome.tabs.create({ url:url, active: true }); 
     chrome.tabs.query({active:true}, function(tabs){ 
      chrome.tabs.sendMessage(tabs[0].id, {"message": "sample_msg"}); 
     }); 
    } 
}); 

createAlarm(); 

И content_script.js имеет следующий код,

chrome.runtime.onMessage.addListener(
    function(request,sender,sendresponse) { 
    if(request.message === "sample_msg") { 
     console.log('message from content script');      
    } 
    } 
); 

Вот manifest.json, если это имеет значение

{ 
    "manifest_version": 2, 
    "name":"bookcab", 
    "version":"0.1", 
    "background": { 
     "scripts":["background.js"] 
    }, 
    "permissions": [ 
     "alarms", 
     "tabs" 
    ], 
    "content_scripts": [{ 
     "matches":["<all_urls>"], 
     "js": ["content_script.js"], 
     "run_at" : "document_end" 
    }] 
} 

ответ

1

Я включил вкладку нагрузки до отправки сообщения в сценарий содержимого.

ОЖИДАНИЕ TAB, чтобы быть полностью LOADED

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {   
    if (changeInfo.status == 'complete') { 
     chrome.tabs.query({active: true}, function(tabs){ 
     chrome.tabs.sendMessage(tabs[0].id, {"message": "sample_msg"}); 
     } 
    } 
}); 
Смежные вопросы