いつもお世話になっています。
VB6のWebBrowserでローカルに保存してあるWebページを表示したのですが、
保存してあるページの性質上どうしてもスクリプトエラーが発生してしまいます。
エラーメッセージを出力させないように、または、出力されても自動で
確認ボタンを操作して消してしまいたいのですが、スクリプトエラーを
なんらかのイベントでトラップすることなどは可能でしょうか?
IEの詳細設定でスクリプトデバッグを使用しないはonで、スクリプト毎に通知しない
はoffに設定してあります。
IEはver6.0でOSはW2Kです。
よろしくお願いします。
すみません、タイトルがバケてしまいました。
WebBrowserでスクリプトエラーをトラップするには?
です。
「スクリプトエラー」の内容によっては、NavigateComplete2イベント発生時に、pDisp.Document.parentWindow を捕らえ、windowオブジェクトのonerrorイベントで True を返すようにする事で、標準のエラーダイアログが表示されないようになります。
============= Form1 ===========
Option Explicit
Private WithEvents c As Class1
Private Sub c_onerror(ByVal description As Variant, ByVal URL As Variant, ByVal line As Variant, Handled As OLE_CANCELBOOL)
Debug.Print description, URL, line
Handled = True
End Sub
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Set c = New Class1
Set pDisp.Document.parentWindow.onerror = c
End Sub
Private Sub Command1_Click()
Me.WebBrowser1.Navigate2 "c:\test.html"
End Sub
============= Class1 ===========
Option Explicit
Public Event onerror( _
ByVal description As Variant, _
ByVal URL As Variant, _
ByVal line As Variant)
'[ツール]-[プロシージャ属性]で、このFunctionのプロシージャIDを
'『(既定値)』に変更しておいてください。
Public Function onerror( _
ByVal description As Variant, _
ByVal URL As Variant, _
ByVal line As Variant) As Variant
RaiseEvent onerror(description, URL, line)
onerror = True
End Function
間違い。m(_ _)m
以下のように差し替えてください。
> ============= Class1 ===========
Option Explicit
Public Event onerror( _
ByVal description As Variant, _
ByVal URL As Variant, _
ByVal line As Variant, _
ByRef Handled As OLE_CANCELBOOL)
'[ツール]-[プロシージャ属性]で、このFunctionのプロシージャIDを
'『(既定値)』に変更しておいてください。
Public Function onerror_( _
ByVal description As Variant, _
ByVal URL As Variant, _
ByVal line As Variant) As Variant
Dim Handled As OLE_CANCELBOOL
Handled = False
RaiseEvent onerror(description, URL, line, Handled)
onerror_ = Handled
End Function