2013-12-04 3 views
2

UPDATE
Теперь кажется, что это происходит только в первом случае я описал, когда вкладка Extensions перегружается и новая вкладка открыт. Возможная ошибка?chrome.runtime.onConnect.addListener() не работает на начальной вкладке хромированной


Я настраиваю расширение chrome с помощью страницы background.js и content-script.js.

Эти два соединения друг с другом через порт. Теперь, когда он работает, порт становится активным в фоновом режиме каждый раз, когда вкладка активируется или обновляется, а контент-скрипт прослушивается через chrome.runtime.onConnect.addListener() (который возвращает порт).

Это прекрасно работает. За исключением двух (аналогичных) случаев:

  1. Когда расширение загружается на странице Инструменты> Расширения и создается новая вкладка.
  2. На новой вкладке после закрытия и перезапуска Chrome.

Я есть журналы, которые показывают, что в этих случаях background.js делает инициализировать порт ... но сценарий содержание не получает его по какой-то причине.

Это основы того, что я делаю:

background.js

// When a tab gets activated 
chrome.tabs.onActivated.addListener(function(tab) { 
    port = chrome.tabs.connect(tab.tabId, { name: "fh-ext-messenger" }); 
    console.log(port) 
    initPortListener(port); 
}); 

// When a tab is updated 
chrome.tabs.onUpdated.addListener(function(tab) { 
    port = chrome.tabs.connect(tab, { name: "fh-ext-messenger" }); 
    console.log(port) 
    initPortListener(port); 
}); 

content.js

chrome.runtime.onConnect.addListener(function(port) { 
    console.log(port); 
    // ... 
} 

Любые идеи о том, почему это Безразлично» t на начальной вкладке?

ответ

1

Скрипты содержания всегда прикрепляются к вашему расширению. Каждый раз, когда ваше расширение перезагружается или деактивируется, скрипт содержимого будет удален со всех вкладок, на которых он был активен.

Перезагрузка внутреннего абонента не активирует повторную загрузку этой конкретной вкладки.

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

+4

Сценарии содержания ** не ** удаляются, когда расширение перезагружается или дезактивируется. Что происходит * происходит, так это то, что API расширения, связанный с скриптом содержимого, недействителен. –

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