Почему этот код 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>
элемент в конце документа.