页面完全加载后如何执行函数?

IT技术 javascript
2021-01-21 23:36:58

当页面完全加载时,我需要执行一些 JavaScript 代码。这包括图像之类的东西。

我知道你可以检查DOM是否准备好,但我不知道这是否与页面完全加载时相同。

6个回答

那叫load. 它在 DOM 就绪之前就出现了,而 DOM 就绪实际上是出于load等待图像的确切原因而创建的

window.addEventListener('load', function () {
  alert("It's loaded!")
})
如果在我添加处理程序之前我的脚本可能被动态加载并且“加载”事件发生了怎么办?
2021-03-15 23:36:58
脚本未完全加载
2021-03-25 23:36:58
所以,只是为了澄清(如果我可以的话),与 DOM 就绪相比,window.onload每个页面组件/资源(即 *包括 *图像)时调用我对吗?
2021-04-01 23:36:58
@BreakPhreak:是的 :)onload等待属于文档的所有资源。当然,这不包括动态创建的不属于文档本身的请求,例如 AJAX 请求。
2021-04-05 23:36:58
更好的方法是addEventListener("load", function(){……})而不是覆盖该onload属性。
2021-04-10 23:36:58

通常您可以使用window.onload,但您可能会注意到,window.onload当您使用后退/前进历史按钮时,最近的浏览器不会触发

有些人建议使用奇怪的扭曲来解决这个问题,但实际上如果你只是创建一个window.onunload处理程序(即使是一个什么都不做处理程序),这种缓存行为将在所有浏览器中被禁用MDC记录了这个“功能”相当不错,但由于某些原因仍有人使用setInterval和其他怪异的黑客。

某些版本的 Opera 有一个错误,可以通过在页面的某处添加以下内容来解决:

<script>history.navigationMode = 'compatible';</script>

如果您只是想获取每个视图调用一次的 javascript 函数(不一定在 DOM 完成加载之后),您可以执行以下操作:

<img src="javascript:location.href='javascript:yourFunction();';">

例如,我使用这个技巧在加载屏幕上将一个非常大的文件预加载到缓存中:

<img src="bigfile"
onload="this.location.href='javascript:location.href=\'javascript:doredir();\';';doredir();">
谁能澄清这个技巧如何工作的?对我来说太复杂了,doh..
2021-03-14 23:36:58

为了完整起见,您可能还想将其绑定到 DOMContentLoaded,现在已得到广泛支持

document.addEventListener("DOMContentLoaded", function(event){
  // your code here
});

更多信息:https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

这个答案与问题中提出的问题恰恰相反。
2021-03-24 23:36:58
事实上,DOMContentLoaded 事件会在所有 DOM 内容加载完毕后,在加载所有依赖项之前触发。由于引用了答案线程中的用户,$.ready我认为它做出了很好的贡献。顺便提一句。不过,我也会将addEventListener-method 用于load事件,因为它允许您有多个回调:window.addEventListener("load", function(event){ // your code here });
2021-04-03 23:36:58

试试这个它只在整个页面加载后运行

通过 Javascript

window.onload = function(){
    // code goes here
};

通过 Jquery

$(window).bind("load", function() {
    // code goes here
});
为什么不简单地$(document).ready();在 jQuery 可用时使用?
2021-03-16 23:36:58
$(window)让我觉得这将是 jquery——对吗?还是我对 javascript 语法感到困惑?(我是 JS 新手)。
2021-03-17 23:36:58
你的是文档(或多或少只是解析过的 HTML),另一个(“加载”)是一切,包括图像和样式。取决于你需要什么。
2021-04-01 23:36:58

试试这个代码

document.onreadystatechange = function () {
  if (document.readyState == "complete") {
    initApplication();
  }
}

访问https://developer.mozilla.org/en-US/docs/DOM/document.readyState了解更多详情

"interactive"未满载。 "complete"已满载
2021-03-11 23:36:58
最后!感谢一百万,雅各布。这里列出的所有方法都失败了(充其量,一个单选按钮将被更新,并且可以完成计算结果,但按钮不会显示为按下),您的方法可以解决问题。
2021-03-19 23:36:58
是的,这很有帮助。非常感谢~
2021-03-27 23:36:58