5

IEの読込完了 や 状態待機 では、待機しきれずに次の処理へ遷移してしまう事があります。

参考:
IE操作(読込完了待ち) を利用しないで読み込み完了をコントロールする方法について

「ウィンドウ状態待機」、思い通りに活用できてますか?

そこで、少しは状況が改善されるように「IE操作(読込完了待ち)」の改良を考えてみました。

完全ではありません。
理由は、システムに応じて”待機”の定義が変わると考えているからです。
(例えばフォームの書き込み可能となった時点が読込完了の場合などが考えられます。)

今回はメインフレームの読込以外に子フレームの読込完了まで待機する修正を行ってみます。

スクリプトの以下の部分の後に
--------------------------------------------------------------
' readyStateのチェック(IE6ではreadyStateが存在しない)
state = Empty
On Error Resume Next
state = wnd.document.readyState
On Error GoTo 0
If Not IsEmpty(state) Then
If state <> "complete" Then
passCount = 0
Exit For
End If
End If
--------------------------------------------------------------

こんな感じに追記を行います。

--------------------------------------------------------------
' readyStateのチェック(IE6ではreadyStateが存在しない)
state = Empty
On Error Resume Next
state = wnd.document.readyState
On Error GoTo 0
If Not IsEmpty(state) Then
If state <> "complete" Then
passCount = 0
Exit For
End If
End If

On Error Resume Next
For j = 0 To wnd.document.frames.Length - 1
state = wnd.document.frames(j).document.readystate
If Not IsEmpty(state) Then
If state <> "complete" Then
passCount = 0
Exit For
End If
End If
Next
On Error GoTo 0
--------------------------------------------------------------

先にも書きましたが完全ではありません。
こんなやり方があると気が付かれた方は、回答に記載してみてください。

参考まで。

一般職 新しいコメントを投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。