Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Почему в FF не исполняется клонированный тэг script? (https://javascript.ru/forum/css-html-firefox-mizilla/6165-pochemu-v-ff-ne-ispolnyaetsya-klonirovannyjj-tehg-script.html)

NT Man 15.11.2009 15:00

Почему в FF не исполняется клонированный тэг script?
 
Ниже наглядный пример, который через метод replaceChild инициирует запуск вставленных в DOM скриптов. Только в первом случае подготовка делается через createElement, во втором через cloneNode. Мне лично больше нравиться второй вариант, который и компактнее и правильнее т.к. позволяет копировать всевозможные атрибуты. Но почему второй вариант не нравиться мозилле я не понимаю.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Внедренный JavaScript</title>
<script type="text/javascript">
function ggg(k) {
    var to = document.getElementById("bbb");
    to.innerHTML = 'Some text<br/><script id="fedora-banner" type="text/javascript" src="http://fedoraproject.org/static/js/release-counter-ext.js?lang=ru"><\/script>';

	//Исполнение внедренных JavaScript скриптов
	var scripts = to.getElementsByTagName("script");
	var script;
	for (var i = 0; script = scripts[i]; i++)
    switch (k) {
    case 1:
		//Везде работает
		var newScript = document.createElement('script');
		newScript.type="text/javascript";
		if (script.id) newScript.id = script.id;
		if (script.src) newScript.src = script.src;
		if (script.text) newScript.text = script.text;
		script.parentNode.replaceChild(newScript, script);
		break;
    case 2:
		//В Mozilla FF не работает (в IE, Opera, Chrome - работает)
		var newScript = script.cloneNode(true);
		script.parentNode.replaceChild(newScript, script);
        break;
	}
}
</script>
</head>
<body>  
<input type="button" value="exec v1" onclick="ggg(1)" />
<input type="button" value="exec v2" onclick="ggg(2)" />
<div id="bbb" />
</body>
</html>


Часовой пояс GMT +3, время: 19:53.