我正在执行一个外部脚本,使用<脚本>内<头>。
现在,由于脚本在页面加载之前执行,我不能访问<body>等。我想在文档被“加载”(HTML完全下载并在ram中)后执行一些JavaScript。是否有任何事件,我可以挂钩到当我的脚本执行,这将在页面加载触发?
我正在执行一个外部脚本,使用<脚本>内<头>。
现在,由于脚本在页面加载之前执行,我不能访问<body>等。我想在文档被“加载”(HTML完全下载并在ram中)后执行一些JavaScript。是否有任何事件,我可以挂钩到当我的脚本执行,这将在页面加载触发?
当前回答
这些解决方案是有效的:
正如注释中提到的,使用defer:
<script src="deferMe.js" defer></script>
or
<body onload="script();">
or
document.onload = function ...
甚至
window.onload = function ...
请注意,最后一个选项是更好的方法,因为它不引人注目,而且被认为更标准。
其他回答
只需定义<body onload=" function ()>,它将在页面加载后被调用。脚本中的代码被function(){}括起来。
<body onload="myFunction()">
这段代码运行良好。
但窗口。Onload方法有各种依赖关系。所以它可能不会一直有效。
$(window).on("load", function(){ ... });
.ready()最适合我。
$(document).ready(function(){ ... });
.load()将工作,但它不会等到页面加载。
jQuery(window).load(function () { ... });
对我不起作用,破坏了下一个内联脚本。我也使用jQuery 3.2.1以及一些其他的jQuery叉子。
隐藏我的网站加载覆盖,我使用以下:
<script>
$(window).on("load", function(){
$('.loading-page').delay(3000).fadeOut(250);
});
</script>
document.onreadystatechange = function(){
if(document.readyState === 'complete'){
/*code here*/
}
}
看这里:http://msdn.microsoft.com/en-us/library/ie/ms536957(v=vs.85).aspx
使用此代码与jQuery库,这将工作得很好。
$(window).bind("load", function() {
// your javascript event
});