Показать сообщение отдельно
  #1 (permalink)  
Старый 15.11.2009, 15:00
Интересующийся
Отправить личное сообщение для NT Man Посмотреть профиль Найти все сообщения от NT Man
 
Регистрация: 09.08.2009
Сообщений: 12

Почему в 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>
Ответить с цитированием