IE9 ошибка?<script> содержимое выполняется дважды при использовании Node.cloneNode (true) - PullRequest
0 голосов
/ 24 мая 2018

Я знаю, что IE9 сейчас немного стар, но это самая низкая версия IE, которую я все еще должен поддерживать в создаваемом веб-приложении.

В любом случае, при выполнении некоторых манипуляций с DOM и тестировании вВ разных браузерах я заметил, что IE9 делает что-то очень странно.У меня был блок в элементе DIV, и когда я глубоко клонировал этот элемент DIV, используя Node.cloneNode (true), и прикрепил клон к документу где-нибудь, используя document.body.appendChild или document.body.insertBefore,клонированный блок будет снова выполнен!Ни один другой браузер не демонстрирует такого поведения.

Если я не ошибаюсь, блоки не должны выполняться при добавлении в документ после его начальной загрузки, я прав?Если я прав, это ошибка в IE9?

Вот простой HTML-документ, где вы можете увидеть это поведение в действии.Создайте HTML-документ с этим кодом и загрузите его в Internet Explorer, используя эмуляцию IE9.Вы должны увидеть всплывающее окно с предупреждением «эй».Затем нажмите кнопку «Click Me», и вы увидите, что то же самое всплывающее окно снова запускается!

<!DOCTYPE html>
<html>
<head>
<title>IE9 Script Tag Bug Test</title>
<script>
function ButtonClick(){
var Elem = document.getElementById('mydiv');
var ElemClone = Elem.cloneNode(true);
document.body.insertBefore(ElemClone,Elem);
}
</script>
</head>
<body>
<div id="mydiv">
This is a DIV.
<script>
alert("hey");
</script>
</div>
<button onclick="ButtonClick();">Click Me</button>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...