2016-03-12 6 views
0

У меня следующий пример ниже. Мне любопытно, почему консольный журнал пишет, что «документ готов» дважды (как в FF, так и в Chrome). Как я могу убедиться, что он работает только один раз?Почему document.onreadystatechange запускается дважды?

Дополнительный вопрос: так как я также использую window.onload, у которого уже есть прикрепленное событие, можно ли добавить событие окна без удаления ранее назначенных?

<!doctype html> 
<html> 
    <head> 
     <script> 
      window.onload=function(){console.log('window is ready');} 
      document.onreadystatechange = function(){console.log('document is ready');} 
     </script> 
    </head> 
    <body> 
     Hello 
    </body> 
</html> 
+3

посмотрите на эту ссылку https://developer.mozilla.org/en/docs/web/api/document/readystate она объясняет все 3 состояния docum ent.readystate. Да, вы можете добавить дополнительное событие в окно, не удаляя ранее назначенные события/с. – Konrud

+2

Он запускается каждый раз, когда ReadyState _changes_, внутри функции вы должны проверить, что такое ReadyState, и действовать на это. –

+0

Спасибо! ссылка объясняется очень хорошо! :) – user2022678

ответ

1

Он работает несколько раз, потому что есть несколько состояний

https://developer.mozilla.org/en/docs/Web/API/Document/readyState

loading, interactive, complete

Если вы хотите, чтобы поймать только один из них, просто отфильтровать его, используя код, похожий на тот, который вы см. по ссылке

Смежные вопросы