Проверьте (из букмарклета), загружена ли страница? - PullRequest
4 голосов
/ 24 ноября 2010

Я пишу букмарклет javascript. Проблема в том, что он может быть вызван пользователем до и после завершения загрузки какой-либо страницы. Я хочу убедиться, что скрипт запускается только после завершения загрузки страницы. Как это сделать?

Ответы [ 5 ]

3 голосов
/ 24 ноября 2010

Один из способов проверить, загружен ли документ, - проверить свойство document.readyState .IE, Firefox 3.6+, Webkit и Opera поддерживают это.

if (document.readyState === "complete") {
    // do sth
}

Другое дело, если вы хотите дождаться загрузки документа.В этом случае вам нужно прослушать некоторые события, такие как DOMContentLoaded в документе, загрузить в окне или readyStateChange в документе.

2 голосов
/ 24 ноября 2010

Подключение функции к функции готовности / загрузки документа гарантирует, что нигде в вашем коде нельзя будет выполнить до загрузки DOM .

<html>
<body onload="documentLoad()">
    <script type="text/javascript">

    function documentLoad() {
        alert("Document is ready now.");
    }

    </script>
</body>
</html>

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

$(document).ready(function() {
    // All code in here - will trigger when DOM is loaded.
}

А вот еще более короткий сокращенный метод, использующий jQuery, для достижения того же самого.

$(function(){
    // All code in here - will trigger when DOM is loaded.
});
0 голосов
/ 24 ноября 2010

Большинство ответов здесь отвечают на вопрос о том, как прикрепить функцию к функции готовности документа, а это не то, о чем просит Давидгале ...

Объект document имеет свойство readyState, которое будетустановите значение "complete" после завершения загрузки.

<html>
<body>

   <script type="text/javascript">

   function someFunction() {
      // Called various times throughout page's life.

      if(document.readyState == "complete") {
         // Perform DOM actions - will only attempt after DOM is loaded.
      }
   }
   </script>

</body>
</html>
0 голосов
/ 24 ноября 2010
var firstLoad = true;
$(document).ready(function(){
    if ( firstLoad ){
        firstLoad=false;
        //your code to run once
    }
});
0 голосов
/ 24 ноября 2010
<body onload="start()">
</body>

При запуске функции DOM гарантированно загружается.

...