C#
WPF

WPFのWebBrowserでJavaScriptのエラーのポップアップを抑止する

More than 3 years have passed since last update.

Windows Formsでは簡単なWebBrowserのエラーを抑止する方法もWPFだとそうもいきません。


JavaScriptを挿入する

検索していて多かった解説がこのパターン。

function noError() {

return true;
}
window.onerror = noError;

window.onerrorをハンドリングするJavaScriptを挿入するとても賢いようにおもえるこの方法も、ドキュメントの初期ロード時にエラーが発生する場合にはエラーのダイアログは抑止できません。


IWebBrowser2インターフェースでSilentプロパティを設定する

Scribbled Records - WPF の WebBrowser コントロールで ScriptErrorsSuppressed を実現する方法で書かれていた方法です。

<WebBrowser x:Name="browser"/>

var axIWebBrowser2 = typeof(WebBrowser).GetProperty("AxIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);

var comObj = axIWebBrowser2.GetValue(browser, null);

// JavaScriptのエラー表示を抑止する
comObj.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, comObj, new object[] { true });

D&Dについても同様に設定できます。

// Drag&Dropの禁止

comObj.GetType().InvokeMember("RegisterAsDropTarget", BindingFlags.SetProperty, null, comObj, new object[] { false, });