我正在执行一个外部脚本,使用<脚本>内<头>。
现在,由于脚本在页面加载之前执行,我不能访问<body>等。我想在文档被“加载”(HTML完全下载并在ram中)后执行一些JavaScript。是否有任何事件,我可以挂钩到当我的脚本执行,这将在页面加载触发?
我正在执行一个外部脚本,使用<脚本>内<头>。
现在,由于脚本在页面加载之前执行,我不能访问<body>等。我想在文档被“加载”(HTML完全下载并在ram中)后执行一些JavaScript。是否有任何事件,我可以挂钩到当我的脚本执行,这将在页面加载触发?
当前回答
使用此代码与jQuery库,这将工作得很好。
$(window).bind("load", function() {
// your javascript event
});
其他回答
这些解决方案是有效的:
正如注释中提到的,使用defer:
<script src="deferMe.js" defer></script>
or
<body onload="script();">
or
document.onload = function ...
甚至
window.onload = function ...
请注意,最后一个选项是更好的方法,因为它不引人注目,而且被认为更标准。
只需定义<body onload=" function ()>,它将在页面加载后被调用。脚本中的代码被function(){}括起来。
这是一个基于延迟js加载的脚本,在页面加载后,
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "deferredfunctions.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
我该把它放在哪里?
将代码粘贴到</body>标记之前(靠近HTML文件的底部)。
它能做什么?
此代码表示等待整个文档加载,然后加载 外部文件deferredfunctions.js。
这是上面代码的一个例子- JS的延迟渲染
我写这个基于延迟加载javascript页面速度谷歌的概念,也从这篇文章延迟加载javascript
<body onload="myFunction()">
这段代码运行良好。
但窗口。Onload方法有各种依赖关系。所以它可能不会一直有效。
合理的可移植,非框架的方式让你的脚本设置一个函数在加载时运行:
if(window.attachEvent) {
window.attachEvent('onload', yourFunctionName);
} else {
if(window.onload) {
var curronload = window.onload;
var newonload = function(evt) {
curronload(evt);
yourFunctionName(evt);
};
window.onload = newonload;
} else {
window.onload = yourFunctionName;
}
}