Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№105-01-2014 13:35:04

YuryL
Участник
 
Группа: Members
Зарегистрирован: 24-08-2010
Сообщений: 31
UA: Firefox 26.0

Добавление скрипта в DOM дерево динамически

Все работает с 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()"/>
<button label="button2" onclick="test2()"/>

После загрузки страницы кликая на "button1" нет ничего,
после того как кликнем на button2, появляется функция test72
И кликая на "button1" еще раз уже имеем результат.

С xul страницей что-то никак не получается добавить динамически скрипт делая тоже самое..

Отредактировано YuryL (05-01-2014 14:27:17)

Отсутствует

 

№205-01-2014 19:14:12

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 26.0

Re: Добавление скрипта в DOM дерево динамически

mozIJSSubScriptLoader.loadSubScript()
И можно попробовать

Выделить код

Код:

var script = document.createElementNS("http://www.w3.org/1999/xhtml", "script");
script.textContent = "alert('Ok');";
document.documentElement.appendChild(script);

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№305-01-2014 19:16:04

YuryL
Участник
 
Группа: Members
Зарегистрирован: 24-08-2010
Сообщений: 31
UA: Firefox 26.0

Re: Добавление скрипта в DOM дерево динамически

кстати, вопрос,
кто-нибудь пользуется XUL GEAR?

года два назад у меня все работало, сейчас только открывается окно,
но сделать больше ничего нельзя.

Добавлено 05-01-2014 19:33:38

Infocatcher пишет

mozIJSSubScriptLoader.loadSubScript()
И можно попробовать

Выделить код

Код:

var script = document.createElementNS("http://www.w3.org/1999/xhtml", "script");
script.textContent = "alert('Ok');";
document.documentElement.appendChild(script);

Спасибо большое, Infocatcher,
что только я уже не перепробовал...
Не совсем понятно про Name spaces, но главное работает!

Отредактировано YuryL (05-01-2014 19:33:38)

Отсутствует

 

№405-01-2014 20:22:49

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 26.0

Re: Добавление скрипта в DOM дерево динамически

YuryL пишет

кто-нибудь пользуется XUL GEAR?

года два назад у меня все работало, сейчас только открывается окно,
но сделать больше ничего нельзя.

Я не пользуюсь, но, судя по консоли ошибок, надо сказать спасибо оптимизаторам, выпилившим «ненужный» E4X.


YuryL пишет

Не совсем понятно про Name spaces, но главное работает!

Ну, в явном виде это нигде не описано, но у <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

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]