Почему этот код XUL работает, а эквивалент Javascript - нет?

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 ответа

Решение

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

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

Другие вопросы по тегам