Я не встречал упоминаний об этой книге Дэвида Фланагана «JavaScript - полное руководство» (я тоже задавал этот вопрос на O'Reilly Ответы) или где-либо еще по этому вопросу, но я обнаружил, что window.onunload не вызывается, если документ не загружен полностью, что довольно раздражает! Это верно для IE8 и Chrome 3 по крайней мере
У меня есть фрагмент Javascript, который я хочу добавить в конец веб-страниц. Если пользователь случайно щелкнул страницу до загрузки страницы (^ см. Ниже) и до того, как мой Javascript успел запуститься, я надеялся перехватить это в onunload. Но это невозможно, так как обработчик события onunload вызывается только при полной загрузке документа. Если я не могу использовать onunload, могу ли я использовать что-то еще для достижения того же самого?
^ «Javascript - The Definitive Guide» предполагает, что взаимодействие пользователя со страницей не может происходить, пока страница не загружена. Я считаю, что это неправильно. Вот что говорится в книге:
"Еще одна серая область в модели выполнения Javascript - это вопрос о том, можно ли вызывать обработчики событий до полной загрузки документа. Наше обсуждение модели выполнения Javascript до сих пор пришло к выводу, что все обработчики событий всегда запускаются после того, как все сценарии были выполнены. Хотя это обычно происходит, это не требуется никаким стандартом. Если документ очень длинный или загружается по медленному сетевому соединению, браузер может частично отобразить документ и позволить пользователю начать взаимодействие с ним (и запускает обработчики событий) до запуска всех сценариев и обработчиков загрузки. Если такой обработчик событий вызывает функцию, которая еще не определена, он завершится ошибкой (это одна из причин для определения всех функций в сценариях в document.) И если такой обработчик событий попытается манипулировать частью документа, которая еще не была проанализирована, он потерпит неудачу. Этот сценарий редко встречается на практике и обычно не стоит дополнительного кодирования ef Форт обязан агрессивно защищаться от этого. "
(5-е издание, стр. 256)
Я выполнил тесты на IE8, которые показали, что на любой стадии загрузки страницы можно взаимодействовать со страницей (и оставлять ее через ссылку).
Спасибо за любую помощь,
Пол