Привет Уважаемые! Сразу к делу. в моем расширении для Google Chrome мне нужен постоянно открытый порт для связи popup.html(то есть та часть которая появляется при нажатии на иконку расширения в манифесте это «default_popup») и части которая отрабатывает непосредственно на самой вкладке (фоновая часть в манифесте это content_scripts{«js»:[«backgound.js»]}).
Сейчас у меня в popup.html написан код создающий соединение (я так понимаю он запускается при клике на иконку расширения в момент показа popup), код такой:
chrome.windows.getCurrent(function(w){
chrome.tabs.getSelected(w.id,function(t){
port = chrome.tabs.connect(t.id);
port.onMessage.addListener(Answer);
});
});
то есть он создает порт и подписывается на события отправки сообщений.
А в фоновом скрипте(background.js) есть такой код:
chrome.extension.onConnect.addListener(function(port){
window.port = port;
port.onMessage.addListener(Question);
});
то есть он ждет от расширения события создания коннекта и если оно возникает подписывается на событие отправки сообщения на созданный порт.
Это все хорошо работает и они «переплевываются» сообщениями, НО…
Внимание вопрос:
Если я нажимаю куда либо на вкладке(на сайте) то окно расширения естественно исчезает и соединение рвется. Все остальные попытки отправить что либо по данному порту из backround.js заканчиваются сообщением в консоли «Uncaught Error: Attempting to use a disconnected port object „
Как мне сделать постоянное соединение? Оно живо пока не закрыто окно расширения, как можно сделать так чтоб я спокойно клацал по сайту а окно расширение было открыто?
P.S. Вопрос очень срочный, если нужны уточнения пишите в личку. Огромное всем спасибо!