Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dom 为什么我的浏览器说对文档元素的访问被拒绝_Dom_Iframe_Com_Autohotkey - Fatal编程技术网

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)