2016-03-14 3 views
0

Я пытаюсь создать свое первое расширение Chrome, и я что-то заметил. Я думаю, что проблема может быть связана с страницей событий.Перезагрузка Chrome-расширения

chrome.browserAction.onClicked.addListener(function(tab) { 
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
chrome.tabs.sendMessage(tabs[0].id, {xbank: "click"}) 
}); 
}); 

Все отлично работает, за исключением, когда я перезагрузить расширение, указанное действие создает эту ошибку «расширения :: uncaught_exception_handler: 8 Ошибки в ответ на tabs.query: TypeError: Не удается прочитать свойство„идентификатор“неопределенный».

Если я перезапущу Chrome, все снова отлично работает.

Какой подход следует принять во избежание этой возможной ошибки?

Редактировать - спасибо François F за то, что указали мне в правильном направлении. Для тех, кто изучает веревки, новые вкладки в Chrome имеют невидимый хром: // newtab/URL. Аналогично, страница расширений имеет chrome: // extensions/URL. И мой скрипт контента не будет выполняться ни на одном.

chrome.browserAction.onClicked.addListener(function(tab) { 
    if((tab.url).toString().indexOf("http")==-1){ 
     alert("URL for this page is:\n" + tab.url + "\n\nCannot open app on this URL must be http/htttps"); 
} 
else{ 
     chrome.tabs.sendMessage(tab.id, { xbank: "click" }) 
    } 
}); 

ответ

2

chrome.browserAction.onClicked уже дает вкладку, откуда икона была нажата, так что вам нужно только сделать это:

chrome.browserAction.onClicked.addListener(function(tab) { 
    if (!tab) 
    { 
     return; // this makes sure the browser action was triggered from a tab 
    } 
    chrome.tabs.sendMessage(tab.id, { 
     xbank: "click" 
    }) 
}); 
+0

Спасибо за указание на это. На перезагрузке все еще ничего ... –

+0

Я нашел проблему. Я не думал, что это вообще так. Когда я открываю новую вкладку в Chrome, в адресной строке нет URL-адреса, и мой сценарий содержимого не запускается. –

Смежные вопросы