標籤:表單 ack 網頁 public info rac 擴充 lag fico
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屏蔽彈出指令碼錯誤表單