1

Я новичок в разработке Google Chrome Extension, и у меня возникает проблема, из-за которой сценарий содержимого не выполняется. Ниже приводится подробное описание проблемы.Расширение Chrome - страницы событий/передача сообщений не работает

Я работаю над расширением, чтобы читать содержимое DOM с веб-сайта за сообщение example.com У меня есть следующие файлы и соответствующая часть кода.

манифеста

{ 
    "manifest_version" : 2, 

    "name" : "My First Chrome App", 
    "description" : "My First Chrome App", 
    "version": "1.0", 

    "browser_action" : { 
     "default_title" : "Hello" 
    }, 

    "permissions" : ["tabs"], 

    "background" : { 
     "scripts" : ["background.js"], 
     "persistence" : false 
    }, 

    "content_scripts":[ 
    { 
     "matches": [ 
     "http://example.com/HomePage.aspx" 
     ], 
     "js": ["jquery_224.js", "content_script.js"] 
    }] 
} 

background.js

Мое намерение состоит в том, чтобы создать вкладку и прибой на страницу, которая упоминается в приведенном ниже сценарии. И он должен послать сообщение content_script.js

chrome.browserAction.onClicked.addListener(function(){ 
    chrome.tabs.create({ url: "http://example.com/HomePage.aspx" }, function(tab){ 
    chrome.runtime.sendMessage({authKey : "parse-dom"}); 
    setTimeout(function(){ 
     chrome.tabs.remove(tab.id); 
    }, 2000); 
    }); 
});. 

content_script.js

Здесь я пытаюсь читать authKey, что я посылаю его от моего background.js

chrome.runtime.onMessage.addListener(function(request,sender,response){ 
    alert(request.authKey); 
}); 

К сожалению, я не получаю предупреждение и не вижу ошибок скрипта. Я прошел через Chrome Messaging API и следил за тем же

Где я иду не так?

ответ

0

Попробуйте с

"content_scripts":[ 
{ 
    "run_at": "document_start", 

Больше информации: https://developer.chrome.com/extensions/content_scripts

или попытаться положить тайм-аут на вашем фоне SendMessage

EDIT: Я также заметил на manifest.json у вас есть HTTPS совпадение при создании вкладки с HTTP адрес

+0

Не работает. Время, я удалил реализацию 'setTimeout'. Btw, исправил мой вопрос, связанный с ** HTTP ** и ** HTTPS ** – Sriram

+1

Как насчет ** chrome.tabs.sendMessage (tab.id, {authKey: "parse-dom"}) ** или даже помещать его в таймаут ** setTimeout (() => {chrome.tabs.sendMessage (tab.id, {authKey: "parse-dom"})}, 1000); ** – Andrea

+0

Пробовал этот 'chrome.tabs.sendMessage (вкладка .id, {authKey: "parse-dom"}); '. Не работает. На самом деле в этом случае функция 'setTimeout' не нужна. – Sriram