首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Excel VBA:在Internet Explorer中等待JavaScript执行

Excel VBA:在Internet Explorer中等待JavaScript执行
EN

Stack Overflow用户
提问于 2012-10-23 19:46:20
回答 2查看 10.6K关注 0票数 4

我正在尝试在Excel VBA中进行一些web抓取。下面是我遇到问题的代码部分:

代码语言:javascript
复制
IE.Navigate URL
Do
  DoEvents
Loop While IE.ReadyState <> 4 Or IE.Busy = True
Set doc = IE.document

运行后,此doc包含的html中仍有未执行的JavasScript。这是尚未执行的脚本的签名:

代码语言:javascript
复制
<SCRIPT type=text/javascript>
        goosSearchPage.Initialize(...)...;
</SCRIPT>

我可以通过执行Application.Wait(Now + TimeValue(x))来等待执行,但这确实不能令人满意,因为脚本执行的时间根据输入的不同而变化很大。

有没有一种方法可以等待脚本完成计算,或者直接在doc对象中计算脚本?

EN

回答 2

Stack Overflow用户

发布于 2013-10-18 19:38:51

实际上,您可以使用ie窗口来评估javascript函数。但是你必须设置一个回调函数,因为函数将被异步计算。

票数 0
EN

Stack Overflow用户

发布于 2020-08-22 10:17:23

这篇文章很老了,但既然我已经发现了如何做到这一点,我也会回答这个问题,作为对我自己的回复。

只需指向您希望在jQuery脚本运行后出现的内容,使用JavaScript通过IE自动化触发所需的事件,然后执行循环以等待所需的内容出现。

代码语言:javascript
复制
'This will trigger the jQuery event.
Doc.parentWindow.execScript "$('#optionbox').trigger('change')"

'This is the code that will make you wait. It's surprisingly efficient
Do While InStrB(Doc.getElementById("optionbox").innerHTML, "<desired html tag>") = 0
    DoEvents
Loop
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13029708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档