我正在开发一个使用 Web 技术开发桌面应用程序的平台。在此过程中,我一直在尝试让一些文档/就绪功能与我将集成到平台中的浏览器一起使用。这就是为什么我之前在 SO 上问过这个问题:javascript-framework-that-primarily-provides-just-document-onready-functionality
但是,我无法让我选择的浏览器(嘘,这是一个秘密;)成功利用该浏览器建议的功能,并且只能回答上述问题。所以,在试图弄清楚什么可能有效的过程中,我偶然发现了以下内容。
下面的代码在我正在使用的浏览器中具有相同的效果,只需在 1 毫秒超时后执行一个函数:我可以在加载大图像时写入 DOM。这对我来说可能不是最终的解决方案,我可能会写一些特定于这个浏览器的 Javascript 引擎如何实现 DOM 功能的东西。
尽管如此,我还是决定看看这是否适用于标准浏览器,令我惊讶的是,它确实有效!有鉴于此,我的问题是:各种 Javascript 框架提供的 dom/readiness 功能的各种实现,只是矫枉过正吗?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
setTimeout(function() {
var txtNode = document.createTextNode("ready_yet?");
var ready_yet_el = document.getElementById("ready_yet");
ready_yet_el.appendChild(txtNode);
},1);
</script>
</head>
<body>
<div id="ready_yet"></div>
<img src="http://www.ryanmorr.com/tests/ondomready/pic.jpg" />
</body>
</html>
编辑/进一步的想法在我之前相关问题的答案所链接的页面上,它指出“对于 Firefox 和 Opera,事件类型的简单检查将确定它是否为 DOMContentLoaded。Safari 和 IE 将检查文档的就绪状态...... .最后,万一所有其他方法都失败了,onload 事件将出现在后面。” 也许类似于我上面的 setTimeout 的 setInterval 可能是倒数第二个行动方案,然后才将 onload 作为最后的手段?无论如何,使用我选择的可嵌入浏览器,似乎既不支持 DOMContentLoaded 事件,也不支持 document.readyState。