>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Добавление скрипта в DOM дерево динамически http://forum.mozilla-russia.org/viewtopic.php?id=61482 |
YuryL > 05-01-2014 13:35:04 |
Все работает с html страницей, а с xul страницей никак Выделить код Код:function test2(){ var tn = window.document.createElement("script"); tn.textContent = "function test72(){alert('test72');}"; window.document.lastChild.firstChild.appendChild(tn); }//добавляем в <head> <button label="button1" onclick="test72()"/> После загрузки страницы кликая на "button1" нет ничего, С xul страницей что-то никак не получается добавить динамически скрипт делая тоже самое.. |
Infocatcher > 05-01-2014 19:14:12 |
mozIJSSubScriptLoader.loadSubScript() Выделить код Код:var script = document.createElementNS("http://www.w3.org/1999/xhtml", "script"); script.textContent = "alert('Ok');"; document.documentElement.appendChild(script); |
YuryL > 05-01-2014 19:16:04 |
кстати, вопрос, года два назад у меня все работало, сейчас только открывается окно, 05-01-2014 19:33:38 Infocatcher пишет
Спасибо большое, Infocatcher, |
Infocatcher > 05-01-2014 20:22:49 |
YuryL пишет
Я не пользуюсь, но, судя по консоли ошибок, надо сказать спасибо оптимизаторам, выпилившим «ненужный» E4X. YuryL пишет
Ну, в явном виде это нигде не описано, но у <xul:script>, как минимум, отличается реализация: Выделить код Код:var xulScript = document.getElementsByTagNameNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "script")[0]; var htmlScript = content.document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "script")[0]; // в текущей вкладке должна быть открыта HTML-страничка со скриптами alert("XUL:\n" + testNode(xulScript) + "\n\nHTML:\n" + testNode(htmlScript)); function testNode(node) { return [ "Element: " + (node instanceof Element), "HTMLScriptElement: " + (node instanceof HTMLScriptElement), "XULElement: " + (node instanceof XULElement) ].join("\n"); } Выделить код Код:XUL: Element: true HTMLScriptElement: false XULElement: true HTML: Element: true HTMLScriptElement: true XULElement: false |