3

我是 vbscript 的新手,在阅读时我发现了一些代码

Do While ie.busy
stateString = stateString & " " & cstr(ie.readystate)
loop
do while ie.readystate <> 4
stateString = stateString & " " & ie.readystate
loop

所以任何人都可以让我知道忙碌propertyreadystate财产之间的区别。

4

1 回答 1

4

这里

迈克尔哈里斯(MVP)写道:

        [...]
        do until ie.readyState = 4 : wscript.sleep 10 : loop
        [...]


    Is there a reason to use
      do until ie.readyState = 4 : wscript.sleep 10 : loop
    instead of
      While ie.Busy : WScript.Sleep 10: Wend
    [...]

仅根据过去在许多不同 IE 自动化场景中的经验,我观察到 IE.Busy 在确定文档的完全加载状态时并非 100% 可靠。在 .ReadyState 最终到达 4(完成)之前,在某些情况下,似乎 .Busy 会振荡 true/false/true/...。

这种振荡行为可能是当前版本中修复的错误,但在我看来,忙碌的描述比以前更好(至少我记得很多年前读过它)。它简单地说明 IE 正忙于导航或下载,并且没有明确说明与文档本身在构建 DOM 和页面实际呈现在浏览器 UI 中时所经历的各种状态的任何联系。

使用 .ReadyState 而不是 .Busy 避免的问题是在尝试访问/操作不完整 DOM 的脚本中引发的错误。

于 2012-04-09T09:16:39.767 回答