2016-05-17 3 views
0

Так что я получил эту хромированную функциюфункция Chrome работает только один раз

var page_loaded = false; 
chrome.tabs.onUpdated.addListener(function (tabId, info) { 
    if (info.status === "complete") { 
     page_loaded = true; 
    } 
}); 

Может кто-то объяснить, почему эта функция работает только один раз, когда я обновить расширение в URL хром: // расширения/ когда я обновить страницу этой функции больше не работает, пока я снова не обновляю расширение ... почему?

UPDATE

Это, как я знаю, что это не работает оповещение проходит один раз, и после этого молчания ...

chrome.browserAction.onClicked.addListener(function (tab) { 
    if (page_loaded == true) { 
     //Do stuff 
    } 
    else { 
     alert("fail"); 
    } 
}); 
+0

Как вы знаете, что это работает? Это само по себе не _do_, мы не знаем остальной логики вашего расширения, и мы не знаем, есть ли у вас «постоянный» для вашего фонового сценария. – Xan

+1

Кажется, что он работает правильно - после того, как ЛЮБАЯ вкладка закончит загрузку, «alert» больше не будет работать, поскольку «page_loaded» установлено в true, и нет ничего, чтобы снова установить его на «false». – Xan

+0

@ Xan спасибо! Я добавил другое, если проверить, загружается ли страница. –

ответ

0

Из обсуждения комментариев, проблема была в логике внутреннего абонента ,

Он использовал булевский флаг page_loaded, однако есть только код для его установки true и никакой логики для его сброса до false.

Добавление установки к false при соответствующих условиях устраняет проблему.

Отметьте, что вы можете отслеживать это состояние за вкладку.

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