Вызов Init из XUL после загрузки страницы (надстройка Firefox)

Я работал над некоторым кодом в js/html, и он отлично работает. Сейчас я пытаюсь упаковать его в надстройку для Firefox, и у меня возникли некоторые проблемы с правильным XUL-документом.

СТАРЫЙ ОБЫЧНЫЙ HTML/JS

В моем тестовом файле html между <head></head> у меня есть:

<script type="text/javascript" src="js/MyCode.js"></script> 

В конце тестового файла перед </body> у меня есть:

<script type="text/javascript">MyCode.Static.Init();</script>

ДОПОЛНЕНИЕ ДЛЯ FIREFOX: OVERLAY.XUL

В файле overlay.xul в пакете расширения у меня есть:

        <?xml version="1.0"?>
    <overlay id="mycode"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
        <script type="application/x-javascript" src="chrome://mycode/content/MyCode.js"></script>
        <script>
window.addEventListener("load", function () { gBrowser.addEventListener("load",MyCode.Static.Init,true); }, false);
        </script>
    </overlay>

Кажется, это не входит в метод, но опять же, я даже не уверен, правильно ли я запустил слушателей. Будет ли это правильным способом дублировать то, что я делал в простом старом html/js?


person citizencane    schedule 18.03.2010    source источник


Ответы (4)


См. https://developer.mozilla.org/en/Code_snippets/Progress_Listeners. как поймать все изменения/загрузки/перезагрузки страницы

person me.    schedule 19.03.2010

Вы уверены, что gBrowser готов? Просто в качестве проверки работоспособности измените тег скрипта на

 alert(gBrowser); 

чтобы убедиться, что gBrowser готов.

person KZ.    schedule 19.03.2010

Это верно:

gBrowser.addEventListener("load",function () { MyCode.Static.Init(); }, false);

person mrivard    schedule 19.03.2010

Как насчет:

<script>
  window.addEventListener("load", function () { MyCode.Static.Init(); }, false);
</script>

?

person Ghislain Fourny    schedule 18.03.2010
comment
Это не работает должным образом, этот прослушиватель срабатывает только при создании нового окна браузера, а не новой страницы. Нужно выяснить, как вызвать инициализацию после загрузки КАЖДОЙ страницы в браузере. - person citizencane; 18.03.2010