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