Почему этот код XUL работает, а эквивалент Javascript - нет? - PullRequest
0 голосов
/ 18 ноября 2009

XUL путь:

<toolbar id="PersonalToolbar">
  <toolbarbutton 
    id="Testing-Doit-Button2"
    class="bookmark-item pagerank"
    tooltiptext="Do it!"
    oncommand="testing_doit();" 
  />
</toolbar>

способ javascript:

function createBookmarkItem() {
    const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
    var item = document.createElementNS(XUL_NS, "toolbarbutton");
    item.setAttribute("id", "Testing-Doit-Button2");
    item.setAttribute("class", "bookmark-item pagerank");
    item.setAttribute("tooltiptext", "Do it!");
    item.setAttribute("oncommand", "testing_doit();");
    return item;
}
function placeBookmarkItem() {
 var toolbar = document.getElementById("PersonalToolbar");
 var button = createBookmarkItem();
 toolbar.appendChild(button);
}
placeBookmarkItem();

Путь xul показывает кнопку. Путь Javascript показывает кнопку, когда я захожу в оболочку Javascript в Extension Developer Extension, затем нажимаю enumerateWindows (), затем нажимаю chrome: //browser/content/browser.xul, затем набираю код и нажимаю ввод. Путь Javascript не показывает кнопку, когда я включаю button.js в button.xul. Почему?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2009

Часть кода, которую я здесь не цитировал и в которой была ошибка, не работала с той частью кода, которую я цитировал здесь, и в которой не было ошибки. Взгляните на « Я добавляю 10 функций в код, я даже не вызываю ни одну из них, но код перестает работать! » для получения дополнительной информации.

0 голосов
/ 19 ноября 2009

Вам необходимо разместить placeBookmarkItem (); внутри события загрузки документов. Javascript выполняется до того, как документ находится на месте. В противном случае поместите элемент <script/> непосредственно перед элементом </window> в конце документа.

...