Dom 为什么我的浏览器说对文档元素的访问被拒绝
我正在运行下面的自动热键代码,它在好天气时一直有效,而在坏天气时大部分时间有效(互联网和/或计算机运行缓慢)Dom 为什么我的浏览器说对文档元素的访问被拒绝,dom,iframe,com,autohotkey,Dom,Iframe,Com,Autohotkey,我正在运行下面的自动热键代码,它在好天气时一直有效,而在坏天气时大部分时间有效(互联网和/或计算机运行缓慢) 079:Sleep,500 081:ie_win.document.all.lbContentIframe.contentWindow.document.all.btnOkId.click() 082:Sleep,500 083:While,即win.document.all.lbContentIframe.contentWindow.document.readyState“完成” 08
079:Sleep,500
081:ie_win.document.all.lbContentIframe.contentWindow.document.all.btnOkId.click()
082:Sleep,500
083:While,即win.document.all.lbContentIframe.contentWindow.document.readyState“完成”
084:Sleep,100
我得到的错误是第83行
描述:访问被拒绝
帮助文件:C:\Windows\System32\mshtml.hlp
具体而言:文件
这是因为lbContentIframe Iframe文档尚未加载吗?以前我试过
while!ie_win.document.getelementbyid(“lbContentIframe”)
睡眠,100
我没有收到任何错误,因为这一行。在尝试检查是否通过readyState属性加载Iframe之前,是否每次刷新Iframe时都需要这样做
而且,一旦我出现上述错误,无论我尝试了多少次,它都不会再开始工作。这几乎就像ie_win句柄被损坏一样。试试看
While ie_win.readyState!=4 || ie_win.document.readyState!="complete" || ie_win.busy
我发现,在几个交互式网页上,我必须根据我知道存在的值编写一个自定义等待函数,并在整个网页完全加载时填充该值 试着这样做:
ComObjError(false)
While (value == "") {
value := ie_win.document.getElementsByClassname("YourElement")[1].innerText
Sleep 100
}
ComObjError(true)
如果我有时间的话,明天我会尝试这个。一旦有了IFRAME,父文档就不会考虑它的工作了吗?当文档就绪状态为“完成”时,是否意味着所有子帧都已完全加载?因为我发现事实并非如此。这就是为什么我在iframe上等待准备的原因。这就是我发现的。这正是我试图做的事情,有时会失败,因为尝试在不好的时间访问文档。ComObjError(false)将防止代码抛出错误,允许循环继续无故障运行,直到满足条件。是的,您需要编写一个函数来监视网站/iframe/更新的时间
ComObjError(false)
While (value == "") {
value := ie_win.document.getElementsByClassname("YourElement")[1].innerText
Sleep 100
}
ComObjError(true)