Мы обсуждали это на нашем рабочем месте с некоторыми за, а некоторые против поведения. Хотели услышать мнение от вас, ребята:
<html>
<body>
<div>
Test!
<script> document.body.removeChild(document.getElementsByTagName('div')[0]); </script>
</div>
</body>
</html>
Должен ли вышеприведенный скрипт работать и делать то, что должен? Для начала посмотрим, что здесь происходит:
У меня есть JavaScript, который находится внутри элемента <div>
. Этот javascript удалит дочерний узел внутри тела, в котором находится div, внутри которого существует сам скрипт.
Теперь вышеуказанный скрипт отлично работает в 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]);
в коде выше.