1. 程式人生 > >WPF的WebBrowser屏蔽彈出腳本錯誤窗體

WPF的WebBrowser屏蔽彈出腳本錯誤窗體

屏蔽 null stat 調用 this ide uri public value

WPF自帶的WebBrowser在訪問一些有問題的網頁時常常跳出非常多提示腳本錯誤的窗體, 可是WPF沒有自帶屏蔽這些窗體的方法或屬性.

  所以網上找來一使用反射的方法來屏蔽彈出腳本錯誤窗體的方法, 非常管用.

  代碼例如以下:

public void SuppressScriptErrors(WebBrowser wb, bool Hide)
{
FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if
(fiComWebBrowser == null) return;

object objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null) return;

objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });
}

void webBrowser1_Navigated(object
sender, NavigationEventArgs e)
{
SuppressScriptErrors(webBrowser1, true);
}

  也能夠做成擴展方法, 這樣比較好調用.

public static class WebBrowserExtensions
{
public static void SuppressScriptErrors(this WebBrowser webBrowser, bool hide)
{
FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2"
, BindingFlags.Instance | BindingFlags.NonPublic);
if (fiComWebBrowser == null) return;

object objComWebBrowser = fiComWebBrowser.GetValue(webBrowser);
if (objComWebBrowser == null) return;

objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { hide });
}
}

  僅僅需在顯示網頁前調用下面語句就可以:

  this.myWebBrower.SuppressScriptErrors(true);

  本文來自今路客的博客,原文地址:http://blog.jinlook.com/archives/96.html

WPF的WebBrowser屏蔽彈出腳本錯誤窗體