document.readystate = undefined

时间:2009-02-19 13:45:21

标签: javascript internet-explorer-7

从外部JS脚本我使用document.readystate来确定文档是否已加载。

如果未加载,我会附加Onload事件列表器。

然而,当我在IE7上运行IEPRO脚本(类似于FF greasemonkey)时,document.readystate返回'undefined'。 (我猜IE7PRO在文档加载后运行脚本)。

如何通过其他可在浏览器中使用的方式判断文档是否已加载?

澄清(前两个答案): 我的问题不是如何执行onload附加。我的问题是如何确定文档(或DOM)是否已经以document.readystate

之外的其他方式加载
  1. 我无法更改文件。我的脚本是我无法控制的随机页面的插件。

4 个答案:

答案 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似乎表明它们在页面加载后运行。那你为什么要检查页面是否已加载?