WPF的WebBrowser屏蔽彈出腳本錯誤窗體
阿新 • • 發佈:2017-07-03
屏蔽 null stat 調用 this ide uri public value
{
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 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 });
}
}
WPF自帶的WebBrowser在訪問一些有問題的網頁時常常跳出非常多提示腳本錯誤的窗體, 可是WPF沒有自帶屏蔽這些窗體的方法或屬性.
所以網上找來一使用反射的方法來屏蔽彈出腳本錯誤窗體的方法, 非常管用.
代碼例如以下:
public void SuppressScriptErrors(WebBrowser wb, bool Hide){
FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if
object objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null) return;
objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });
}
void webBrowser1_Navigated(object
{
SuppressScriptErrors(webBrowser1, true);
}
也能夠做成擴展方法, 這樣比較好調用.
public static class WebBrowserExtensions{
public static void SuppressScriptErrors(this WebBrowser webBrowser, bool hide)
{
FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2"
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屏蔽彈出腳本錯誤窗體