Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   "Непорядочный" javascript в IE (https://javascript.ru/forum/css-html-internet-explorer/23071-neporyadochnyjj-javascript-v-ie.html)

Ziflary 10.11.2011 16:50

"Непорядочный" javascript в IE
 
Добрый день, уважаемые форумчане. :)

И так, к проблеме.
Имеется следующий простой код:
<HTML>
<body>
<div id="z">
<script type="text/javascript">
document.write('Pre innerHTML');
alert('PreTest');
document.getElementById("z").innerHTML = "";
document.write('Post innerHTML');
alert('PostTest');
</script>
</div>
</body>
</HTML>

При запуске оного на IE 8 сначала появляется "Pre innerHTML", потом alert "Pre test", после alert "Post test", а уже потом Post innerHTML.
(В хроме все выводится по порядку)

Объясните пожалуйста как работает браузер. Почему сообщения выходят не по порядку?
И разве innerHTML не должен освобождать данные, что в div "z", т.е. вместе с JS, т.е. JS не должен отработать до конца? (практически понятно, что НЕТ, но почемуу?)

trikadin 10.11.2011 20:19

Мёсье знает толк в извращениях...:D

У меня ie7, всё по порядку. Так что сказать не могу - проверьте ещё раз.

Цитата:

Сообщение от Ziflary
И разве innerHTML не должен освобождать данные, что в div "z", т.е. вместе с JS, т.е. JS не должен отработать до конца?

Любой объект в JS существует до тех пор, пока на него есть хоть одна ссылка. В данном случае своеобразной "ссылкой" на скрипт является поток исполнения. Поэтому скрипт полностью "исчезнет" только после того, как выполнится. Это, конечно, не совсем правильное объяснение, но по сути верное. Чтобы лучше понять это - почитайте вторую книжку из моего списка)

Ziflary 10.11.2011 22:58

А то ;)

Тестировал на win xp, win 7 (x86 и x64) - везде одна картина.

Спасибо за разъяснение DOM... теперь знаю куда копать :thanks:
И за книжку спасибо, любопытная... обязательно прочту.


Но вопрос с порядком выполнения остается открытым)


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