在页面完全加载时确保javascript运行的最佳方法是什么?

时间:2011-11-03 02:03:58

标签: javascript jquery asp.net

我正在尝试在我的asp.net webform页面中运行我的javascript,但我不确定它是否正常运行,因为尚未加载所有元素。如何使用jquery确保我的脚本位于页面的最底部?所以它可以在页面加载时运行吗?

6 个答案:

答案 0 :(得分:3)

即使每个人都说使用$(document).ready,这也是一种反模式。

你真正想要做的是将你想要加载的任何脚本放在正文的末尾

<html>
 <head> ... </head>
 <body>
  ...
  <script src="..." ></script>
</html>

只要您的脚本位于所有其他HTML内容的末尾,javascript就会在其上方的内容加载时触发。

答案 1 :(得分:1)

使用.ready()

$(document).ready(function($) {
  // page is loaded
});
  

当JavaScript提供用于执行代码的load事件时   页面呈现,此事件在所有资产之前都不会被触发   如图像已被完全接收。在大多数情况下,   只要DOM层次结构完全可以运行脚本   建造。传递给.ready()的处理程序是保证的   在DOM准备好之后执行,所以这通常是最好的地方   附加所有其他事件处理程序并运行其他jQuery代码。使用时   依赖于CSS样式属性值的脚本,这很重要   以前引用外部样式表或嵌入样式元素   引用脚本。

答案 2 :(得分:1)

使用jQuery,您希望附加到ready事件。加载所有DOM元素后会触发此事件:

jQuery(document).ready(function(){

  // jQuery Code here

});

速记版:

$(function(){
    // ...
});

使用此方法,我通常将jQuery放在外部文件中,或放在<head>标记中。

答案 3 :(得分:1)

使用纯JavaScript,您可以使用

window.onload = function() {
    // Page loaded
};

或者你可以使用jQuery的ready函数:

$( document ).ready( function() {
    // Dom loaded
} );

注意:jQuery的ready函数在DOM加载时触发(除非浏览器不支持dom-ready方法),而不是整个页面加载时(图像,脚本等)。

答案 4 :(得分:0)

您应该按照JQuery文档中的建议将代码放在文档就绪块中。 这样,它将在加载所有脚本时加载。

$(document).ready(function(){
//Put your code here
});

答案 5 :(得分:0)

  

当页面完全加载时,确保javascript运行的最佳方法是什么?

如果你的意思是“完全加载”,即所有图像和其他资源下载,那么你必须使用onload处理程序,例如:

window.onload = function() {
   // Everything has loaded, so put your code here
};

如果您的意思是“在解析完所有HTML并且可以从脚本访问所有元素之后”,此时图像可能仍在下载,那么您可以将脚本放在源HTML的底部或使用document.ready处理程序。或两者。有关详细信息,请参阅任何其他答案。