Мы обсуждали это на нашем рабочем месте с некоторыми, а некоторые против поведения. Хотел услышать мнения от вас, ребята:
<html>
<body>
<div>
Test!
<script> document.body.removeChild(document.getElementsByTagName('div')[0]); </script>
</div>
</body>
</html>
Должен ли вышеупомянутый script работать и делать то, что он должен был делать? Во-первых, посмотрим, что происходит здесь:
У меня есть javascript внутри элемента <div>
. Этот javascript удалит дочерний элемент node внутри тела, который имеет место для div, внутри которого существует сам script.
Теперь выше script отлично работает в Firefox, Opera и IE8. Но IE6 и IE7 предупреждают, что не могут открыть страницу.
Не обсуждайте, как IE должен был справиться с этим (они приняли его как ошибку и, следовательно, исправили его в IE8). Дело здесь в том, что сам тег 'SCRIPT' является частью DOM, если ему разрешено делать что-то вроде этого? Должна ли она существовать после такой операции?
Изменить:
Firefox, Opera, IE9 и т.д. не удаляют тег SCRIPT, если я запускаю вышеуказанный код. Но document.getElementsByTagName('SCRIPT'). Length возвращает 0!
Чтобы понять, что я имею в виду, добавьте alert(document.getElementsByTagName('script').length);
до и после document.body.removeChild(document.getElementsByTagName('div')[0]);
в приведенном выше коде.