2015-12-10 39 views
0

我正在運行以下的Autohotkey代碼,這些代碼在糟糕的日子(慢速互聯網和計算機)的美好時光和大部分時間都一直運行。爲什麼我的瀏覽器表示訪問文檔元素被拒絕

079: Sleep,500 
081: ie_win.document.all.lbContentIframe.contentWindow.document.all.btnOkId.click() 
082: Sleep,500 
083: While,ie_win.document.all.lbContentIframe.contentWindow.document.readyState <> "complete" 
084: Sleep,100 

我得到的錯誤是行83

說明:訪問被拒絕。

HELPFILE:C:\ WINDOWS \ SYSTEM32 \ mshtml.hlp

具體做法是:文件

是,由於lbContentIframe的iFrame文件還沒有加載?以前我曾嘗試

while !ie_win.document.getelementbyid("lbContentIframe") sleep, 100

,我還沒有收到由於該行的任何錯誤。在嘗試檢查它是否通過readyState屬性加載之前,每次Iframe可能會刷新時,是否需要這樣做?

另外,一旦我得到上述錯誤,無論嘗試多少次,它都不會再次開始工作。這幾乎就像ie_win句柄被損壞了。

回答

1

嘗試

While ie_win.readyState!=4 || ie_win.document.readyState!="complete" || ie_win.busy 
+0

如果我有時間,我會嘗試這個明天。 – steventaitinger

+0

一旦Iframe存在,父文檔不會認爲它的工作已完成嗎?文檔就緒狀態完成後,是否意味着所有子框架都已完全加載?因爲我發現並非如此。這就是爲什麼我在等待iframe準備就緒。 – steventaitinger

1

我發現,在幾個交互式網頁我會寫基於我知道會存在,填充當整個頁面完全加載一個值的自定義等待功能。

嘗試這樣:

ComObjError(false) 
While (value == "") { 
    value := ie_win.document.getElementsByClassname("YourElement")[1].innerText 
    Sleep 100 
    } 
ComObjError(true) 
+0

這是我發現的。這幾乎是我想要做的,有時候因爲試圖在糟糕的時間訪問文檔而失敗。 – steventaitinger

+0

ComObjError(false)將防止您的代碼發生錯誤,允許您的循環繼續無故障,直到滿足條件。是的,你需要編寫一個函數來監控網站/ iframe /更新 – errorseven

相關問題