WPFwebbrowser 控件屏蔽网页错误

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 });
}

 

WebBrowser加载完成的函数里面调用就可以了,亲测,确实很管用

 

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);

 

posted on 2014-11-27 19:09  秋千笑里低低语  阅读(398)  评论(0)    收藏  举报

导航