从外部JS脚本我使用document.readystate来确定文档是否已加载。
如果未加载,我会附加Onload事件列表器。
然而,当我在IE7上运行IEPRO脚本(类似于FF greasemonkey)时,document.readystate返回'undefined'。 (我猜IE7PRO在文档加载后运行脚本)。
如何通过其他可在浏览器中使用的方式判断文档是否已加载?
澄清(前两个答案): 我的问题不是如何执行onload附加。我的问题是如何确定文档(或DOM)是否已经以document.readystate
之外的其他方式加载答案 0 :(得分:1)
我知道,唯一的跨浏览器操作方法是将函数附加到load
事件window
;这个脚本可能应该放在head
中。当它触发时,设置一个布尔值,以便您知道稍后加载的所有内容。
Prototype库就是这样做的;请参阅来源中的function fireContentLoadedEvent()
。
答案 1 :(得分:1)
您可以在body.onload中执行此操作:
<body onload="document.ready=true;">...
此JavaScript将在加载文档后执行。等到document.ready
为真(或不再定义)。
更好的方法是在onload中调用JS函数,然后调用外部脚本。这不涉及繁忙的等待,但可能不适用于您的情况。如果在框架中加载外部文档,则可以存储要在父文档中调用的函数,并使用嵌套文档中的“window.parent.function()”。
答案 2 :(得分:1)
我不确定你的整个结论,但听起来你可以使用jquery并设置你的代码:
<script language="javascript" type="text/javascript">
$(document).ready(function(){
//have all your code of what you are trying to do here
//
//
});
</script>
答案 3 :(得分:1)
IEPRO UserScripts的help site似乎表明它们在页面加载后运行。那你为什么要检查页面是否已加载?