我想在文档加载后调用一个函数,但是文档可能尚未加载完成,也可能尚未加载完成。如果确实加载,那么我可以调用该函数。如果未加载,则可以附加事件监听器。在onload已经触发之后,我无法添加事件监听器,因为它不会被调用。那么如何检查文档是否已加载?我尝试了下面的代码,但不能完全正常工作。有任何想法吗?
var body = document.getElementsByTagName('BODY')[0];
// CONDITION DOES NOT WORK
if (body && body.readyState == 'loaded') {
DoStuffFunction();
} else {
// CODE BELOW WORKS
if (window.addEventListener) {
window.addEventListener('load', DoStuffFunction, false);
} else {
window.attachEvent('onload', DoStuffFunction);
}
}
不需要galambalazs提到的所有代码。在纯JavaScript中实现跨浏览器的方法只是测试document.readyState
:
if (document.readyState === "complete") { init(); }
jQuery也是这样做的。
根据加载JavaScript的位置,可以在一个间隔内完成:
var readyStateCheckInterval = setInterval(function() {
if (document.readyState === "complete") {
clearInterval(readyStateCheckInterval);
init();
}
}, 10);
实际上,document.readyState
可以具有三种状态:
文档加载时返回“ loading”
,解析完成后返回“ interactive”
,但仍加载子资源,加载后返回“ complete”
。
因此,如果你只需要准备DOM,请检查document.readyState === "interactive"
。如果你需要准备整个页面,包括图像,请检查document.readyState === "complete"
。
问题内容: 我正在尝试检查用户单击按钮后是否已加载iframe。 我有 的HTML 有什么建议么? 顺便说一下,我的iframe是动态创建的。它不会随初始页面加载一起加载。 问题答案: 您可以尝试使用() 更新: 使用普通格式 更新: 您也可以尝试一下(动态iframe)
问题内容: 加载JavaScript文件时是否会触发事件?由于YSlow建议将JavaScript文件移动到页面底部,因此出现了问题。这意味着 在加载包含其代码的js文件之前会触发该事件。 如何避免这种情况? 问题答案: 我没有方便的参考,但是脚本标记是按顺序处理的,因此,如果将脚本标记放在定义function1等的脚本标记之后,则应该可以。 当然,另一种方法是通过在构建过程中合并文件来确保总共只
我正在尝试检查用户单击按钮后是否加载了iframe。 我有 顺便说一下,我的iframe是动态创建的。它不会与初始页面加载一起加载。
我正在为我的网站创建一个打印页面:http://vivule.ee/0/print 我希望在页面加载后启动。我尝试过不同的方法,但都不成功。我知道这是可能的,因为我可以监听完成的Ajax调用,但在Angular中是如何实现的?
问题内容: 我试图检测我的sprite节点是否已被触摸并且我不知道从哪里开始。 问题答案: 首先将的属性设置为字符串。 然后在功能上 这是一种方法。 您也可以继承并覆盖其中的内部。 然后做
问题内容: 我正在基于此页面使用脚本标签长轮询技术实现Comet 。 一个问题(我认为没有解决方案)是“厄运的th子”-浏览器继续将文档永远显示为“正在加载”,并使工具栏上的“停止”按钮保持启用状态。这种品牌的意义,因为该文件 是 仍然加载,虽然它的效果并不理想,我想我可以住在一起。 但是,第二个问题是,如果用户实际单击“停止”,则浏览器将停止加载我的脚本标签,并且我必须依靠超时来重新启动Come