2010-11-24 3 views
4

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

+0

До сих пор никто не понял вопрос. ** Он хочет узнать, закончил ли документ еще что-то. ** – SLaks 2010-11-24 18:59:25

+0

Согласен, см. Мой ответ ... – Greg 2010-11-24 19:15:37

+1

lol, u jerk, спасибо за нисходящий vode ... документ готов, выясняет, когда документ готовая загрузка ... что еще вы думаете, что это делает ... сделать чай? – CrazyDart 2010-11-24 19:16:46

ответ

3

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

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

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

0
<body onload="start()"> 
</body> 

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

2

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

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

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

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

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

$(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
var firstLoad = true; 
$(document).ready(function(){ 
    if (firstLoad){ 
     firstLoad=false; 
     //your code to run once 
    } 
}); 
0

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

Объект 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> 
Смежные вопросы