修改winform中WebBrowser调用的IE版本

修改winform中WebBrowser调用的IE版本

最近在开发一个程序,为了方便,C#+winform开发使用了WebBroswer组件,发现了一个问题:

默认情况下,VS编译出的程序,WebBroswer是调用的IE兼容性视图,兼容性视图下,所有网站基本上是相当于使用IE7访问的效果,结果JS很多地方都报错。

查了一下资料,在以下位置修改注册表:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

以及

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

这几个位置,创建名为你的应用程序名的DWORD键,键值为十进制的11000,程序就会改用IE11调用了(前提是你的机器上要有IE11),这里的数字代表比较多的含义,最前面的数字是IE的版本,后面如果是00,则是标准模式,如果有别的数字,表示兼容性视图的意思。

有人说,改了注册表之后,只有直接运行程序时,才会调用IE11内核,否则还是IE7兼容性视图模式,经过我测试,并没有这样的情况,在VS2017下,Debug模式和直接运行生成的exe效果是一样的。

另外,请注意自己本地的IE浏览器,不要将目标网站加入的“兼容性视图”,否则,WebBroswer也会将它加入兼容性视图,即使你用了11000代码,也没用。

IE各版本的值如下:

11001 (0x2EDF) Internet Explorer 11. Webpages are displayed in IE11 Standards mode, regardless of the !DOCTYPE directive

11000 (0x2AF8) :Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode

10000 (0x2710) :Internet Explorer 10. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
10001 (0x2AF7) :Internet Explorer 10. Webpages are displayed in IE10 Standards mode, regardless of the !DOCTYPE directive.

9999 (0x270F) :Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.

9000 (0x2328) :Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.

8888 (0x22B8) :Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.

8000 (0x1F40) :Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.

7000 (0x1B58) :Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.

发表评论

电子邮件地址不会被公开。 必填项已用*标注