我知道您可以检查DOM是否准备就绪,但是我不知道这是否与页面完全加载时相同。
#1 楼
那叫load
。在DOM准备就绪之前就出现了waaaaay,实际上是由于load
等待图像的确切原因而创建了DOM ready。window.addEventListener('load', function () { alert("It's loaded!") })
pre >评论
因此,为了澄清(如果可以的话),与DOM就绪相比,每个页面组件/资源(即*包括* images)时都调用window.onload。我对吗?
– BreakPhreak
2011年6月22日上午9:21
@BreakPhreak:是:) onload等待文档中的所有资源。当然,这不包括不是文档本身一部分的动态创建的请求,例如AJAX请求。
–马图
2011年6月22日18:49
脚本未完全加载
– HD ..
15年10月23日在10:28
如果在添加处理程序之前可以动态加载脚本并发生“加载”事件怎么办?
– pamelus
16年8月30日在10:40
更好的方法是addEventListener(“ load”,function(){…})而不是覆盖onload属性。
–塞巴斯蒂安·西蒙(Sebastian Simon)
17年9月5日13:21
#2 楼
通常,您可以使用window.onload
,但是您可能会注意到,使用后退/前进历史记录按钮时,最新的浏览器不会启动window.onload
。 有人建议使用怪异的扭曲方法来解决此问题,但实际上,如果您仅创建一个
window.onunload
处理程序(甚至是一个不执行任何操作的处理程序),则该缓存行为将在所有浏览器中禁用。 MDC很好地记录了此“功能”,但由于某些原因,仍然有人使用setInterval
和其他怪异的hacks。某些版本的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();">
评论
谁能澄清这个技巧的运作方式?对我来说太复杂了
–疯狂
20-4-11上午11:46
#3 楼
为了完整起见,您可能还希望将其绑定到DOMContentLoaded,现在已广泛支持该内容。document.addEventListener("DOMContentLoaded", function(event){
// your code here
});
更多信息:https://developer.mozilla.org/en -US / docs / Web / Events / DOMContentLoaded
评论
这个答案与问题中提出的恰恰相反。
–穆罕默德·本·尤斯拉特
17年12月25日在19:25
确实,在加载所有DOM内容之前,在加载所有依赖项之前,都会触发DOMContentLoaded事件。由于回答线程中的用户引用了$ .ready,因此我认为它做出了很大的贡献。顺便说一句。不过,我还将addEventListener方法用于加载事件,因为它允许您进行多个回调:window.addEventListener(“ load”,function(event){//您的代码在这里});
– Murb
18年1月2日在18:08
#4 楼
尝试此操作,仅在整个页面加载后运行使用Javascript
window.onload = function(){
// code goes here
};
通过Jquery
$(window).bind("load", function() {
// code goes here
});
/>
评论
$(window)让我觉得这将是jquery-对吗?还是我弄糊涂了一些JavaScript语法? (我是JS新手)。
–阿岑代尔
15年11月11日在20:51
为什么不简单地使用$(document).ready(); jQuery何时可用?
–安德烈亚斯(Andreas)
16年3月3日在15:22
您的是文档(或多或少只是解析的HTML),其他的(“加载”)则是包括图像和样式在内的所有内容。取决于您的需求。
–装饰品
16-10-25在20:19
#5 楼
尝试使用此代码document.onreadystatechange = function () {
if (document.readyState == "interactive") {
initApplication();
}
}
访问https://developer.mozilla.org/zh-CN/docs/DOM/document.readyState了解更多详细信息
评论
是的,这很有帮助。非常感谢〜
–杨Br仪
19 Mar 5 '19 at 15:55
“交互式”未完全加载。 “完成”已满载
–瑞安·沃克(Ryan Walker)
19年11月7日在21:22
最后!感谢百万,雅各布。这里列出的所有方法都失败了(最多只能更新一个单选按钮,并且可以完成结果计算,但是该按钮不会显示为被按下),您的方法就可以解决问题。
–secr
20年6月13日在20:11
#6 楼
加载所有内容(包括图像等)时,将触发window.onload事件。如果希望您的js代码尽早执行,则希望检查DOM就绪状态。访问DOM元素。
#7 楼
您可能要使用window.onload,因为文档表明直到DOM准备就绪并且页面中的所有其他资产(图像等)都已加载后,它才会被触发。评论
啊,辉煌。香港专业教育学院做到这一点。页面上的最后一个图像是:但是不会重定向我
–本·谢洛克
09年6月23日在16:02
...什么?您要在图像加载后重定向吗?
–马图
09年6月23日16:06
我不确定您为什么要这么做,但是它不重定向的原因可能是display:hidden,因此浏览器不会费心加载它,因为它不会显示。
–马图
09年6月23日在16:07
也许这只是一个隐藏的图像,它在服务器上做一些重要的事情,例如跟踪命中或在数据库中做某事?
– Marc Novakowski
09年6月23日在16:53
我可以理解,但是对它进行重定向对我来说没有意义。如果您不希望用户花时间在页面上,那么为什么还要页面呢?如果目标是在加载时重定向,那么为什么不使用window.onload事件,因为它总体上来说更干净?
–马图
09年6月23日在18:04
#8 楼
使用onLoad()
事件的Javascript将在执行之前等待页面加载。<body onload="somecode();" >
如果您使用的是jQuery框架的文档准备功能,则代码将以DOM加载之后以及页面内容加载之前:
$(document).ready(function() {
// jQuery code goes here
});
#9 楼
这是使用PrototypeJS的一种方法:Event.observe(window, 'load', function(event) {
// Do stuff
});
#10 楼
在使用现代javascript(> = 2015)的现代浏览器中,可以将type="module"
添加到您的脚本标签中,该脚本中的所有内容将在整个页面加载后执行。例如: <script type="module">
alert("runs after") // Whole page loads before this line execute
</script>
<script>
alert("runs before")
</script>
旧版浏览器也会理解
nomodule
属性。像这样的东西: <script nomodule>
alert("tuns after")
</script>
有关更多信息,请访问javascript.info。
#11 楼
GlobalEventHandlers mixin的onload属性是一个事件
,用于处理Window,XMLHttpRequest,元素,
等的加载事件,该事件在资源加载时触发。
因此,基本上javascript都已经在窗口上执行onload方法,该方法将被执行,从而完全加载包含图像的页面...
您可以执行以下操作:
var spinner = true;
window.onload = function() {
//whatever you like to do now, for example hide the spinner in this case
spinner = false;
};
#12 楼
如果需要使用许多onload
,请改用$(window).load
(jQuery):$(window).load(function() {
//code
});
#13 楼
2019年更新:这是对我有用的答案。因为我需要多个ajax请求先触发并返回数据才能计算列表项。$(document).ajaxComplete(function(){
alert("Everything is ready now!");
});
评论
这与问题没有任何关系。此代码与Ajax请求有关。
–杰克(Jackal)
20年9月7日在14:43
评论
那么,如何检查DOM是否准备就绪?如果Java脚本正在加载异步,则会看到此工作正常stackoverflow.com/questions/8618464/…