当在Winform中使用webbrowser控件的时候,一加载网页,就出现各种各样的JS脚本错误提示。
本人是使用如下两种方法解决的,具体是哪种解决问题,俺也不知道。
方法一:
public Form1()
{
InitializeComponent();
this.webBrowser1.ScriptErrorsSuppressed = true;
this.webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
}
private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//## 设置文档窗口错误的处理。
this.webBrowser1.Document.Window.Error += OnWebBrowserDocumentWindowError;
}
private void OnWebBrowserDocumentWindowError(object sender, HtmlElementErrorEventArgs e)
{
e.Handled = true;
}
private void Form1_Load(object sender, EventArgs e)
{
this.webBrowser1.Url = new Uri("http://www.xxx.com");//指定url地址为百度首页 <br>
}
二、方法二
强制webbrowser控件使用相应的IE内核
private enum IeVersion
{
强制ie10,//10001 (0x2711) Internet Explorer 10。网页以IE 10的标准模式展现,页面!DOCTYPE无效
标准ie10,//10000 (0x02710) Internet Explorer 10。在IE 10标准模式中按照网页上!DOCTYPE指令来显示网页。Internet Explorer 10 默认值。
强制ie9,//9999 (0x270F) Windows Internet Explorer 9. 强制IE9显示,忽略!DOCTYPE指令
标准ie9,//9000 (0x2328) Internet Explorer 9. Internet Explorer 9默认值,在IE9标准模式中按照网页上!DOCTYPE指令来显示网页。
强制ie8,//8888 (0x22B8) Internet Explorer 8,强制IE8标准模式显示,忽略!DOCTYPE指令
标准ie8,//8000 (0x1F40) Internet Explorer 8默认设置,在IE8标准模式中按照网页上!DOCTYPE指令展示网页
标准ie7//7000 (0x1B58) 使用WebBrowser Control控件的应用程序所使用的默认值,在IE7标准模式中按照网页上!DOCTYPE指令来展示网页
}
/// <summary>
/// 设置WebBrowser的默认版本
/// </summary>
/// <param name="ver">IE版本</param>
private void SetIE(IeVersion ver)
{
string productName = AppDomain.CurrentDomain.SetupInformation.ApplicationName;//获取程序名称
object version;
switch (ver)
{
case IeVersion.标准ie7:
version = 0x1B58;
break;
case IeVersion.标准ie8:
version = 0x1F40;
break;
case IeVersion.强制ie8:
version = 0x22B8;
break;
case IeVersion.标准ie9:
version = 0x2328;
break;
case IeVersion.强制ie9:
version = 0x270F;
break;
case IeVersion.标准ie10:
version = 0x02710;
break;
case IeVersion.强制ie10:
version = 0x2711;
break;
default:
version = 0x1F40;
break;
}
RegistryKey key = Registry.CurrentUser;
RegistryKey software =key.CreateSubKey( @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\" + productName);
if (software != null)
{
software.Close();
software.Dispose();
}
RegistryKey wwui = key.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true);
//该项必须已存在
if (wwui != null) wwui.SetValue(productName, version, RegistryValueKind.DWord);
}
上述的代码,调用方法为:SetIE(IeVersion.强制ie9);