检查(来自书签)是否加载了页面?

时间:2010-11-24 18:54:59

标签: javascript bookmarklet

我正在写一个书签javascript。这里的问题是,在某个页面加载完成之前和之后,用户可以调用它。我想确保只在页面加载完成后才运行sript。怎么做?

5 个答案:

答案 0 :(得分:3)

检查文档是否已加载的一种方法是检查document.readyState属性。 IE,Firefox 3.6 +,Webkit和Opera都支持它。

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

另一件事是,如果您想等待文档加载。在这种情况下,您必须侦听一些事件,例如文档上的DOMContentLoaded,窗口上的加载或文档上的readyStateChange。

答案 1 :(得分:2)

将函数挂钩到文档的ready / load函数可确保在加载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.
});

答案 2 :(得分:0)

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

在函数启动中,保证加载DOM。

答案 3 :(得分:0)

var firstLoad = true;
$(document).ready(function(){
    if ( firstLoad ){
        firstLoad=false;
        //your code to run once
    }
});

答案 4 :(得分: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>
相关问题