如何将FEATURE_BROWSER_EMULATION设置为IE8模式?

9
我们在Java应用程序中使用嵌入式SWT浏览器。SWT浏览器包装了一个IE8 WebBrowser控件对象。我遇到了众所周知的问题,即默认情况下,WebBrowser控件使用IE7模式而不是IE8模式。(请参见http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx)
根据这篇和其他文章,我正在尝试为我的应用程序设置FEATURE_BROWSER_EMULATION注册表值,以便浏览器默认为IE8模式,但我取得了不同的成功。将其设置为值为8000的IE8标准模式不起作用,但将其设置为值为8888的“强制”IE8标准模式可以。
我通过在SWT浏览器中加载页面,然后执行JavaScript来测试此功能。
browser.execute("alert(document.documentMode);");

如果键值不存在或为8000,则结果为7。如果键值为8888,则结果为8。我正在测试的URL是http://stackoverflow.com,其中包括以下内容。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

有人知道我做错了什么吗?

3个回答

6

首先请检查以下解决方案:

关于IE9 WebBrowser控件的问题

如果上述方法无法满足您的需求,可以使用注册表解决方案。


若要在IE11标准模式下运行WebBrowser控件,请将以下新值添加到注册表中:

32 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

64 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\wow6432node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
 "DesignU.exe" = dword 11000 (Hex: 0x2af8)

要在IE10标准模式下运行WebBrowser控件,请将以下新值输入注册表中:

32 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

64 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\wow6432node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
 "DesignU.exe" = dword 10000 (Hex: 0x2710)

要在IE9标准模式下运行WebBrowser控件,需将以下新值添加到注册表中:
32 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

64 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\wow6432node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
 "DesignU.exe" = dword 9000 (Hex: 0x2328)

要在IE8标准模式下运行WebBrowser控件,请将以下新值添加到注册表中:

32 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

64 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\wow6432node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
 "DesignU.exe" = dword 8000 (Hex: 0x1F40)

要在IE7标准模式下运行,请使用以下注册表值:

32 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

64 bits: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\wow6432node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
 "DesignU.exe" = dword 7000 (Hex: 0x1B58)

1
这正是我所需要的!还应该注意,要使用HKEY_LOCAL_MACHINE,您需要权限,因此最好在安装程序步骤中执行此操作或者在运行时使用HKEY_CURRENT_USER。如果您想将仿真模式设置为使用最高可用版本,则可以从\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\svcVersion(或Version)获取最高系统浏览器版本(不确定类似99999的东西是否会实现这一点)。 - Beejor
为了在HKCU中设置FEATURE_BROWSER_EMULATION,32位和64位使用相同的键(即没有wow6432node): HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION - LesFerch
这里清楚地显示:https://blog.malwarebytes.com/101/2016/01/a-brief-guide-to-feature_browser_emulation/ - LesFerch

5
  1. HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
  2. 在该路径下,添加你的进程名称,然后将DWORD值设置为9999。

是的,“进程名称” 是变量名。其他建议省略了这一点。 - S Meaden

1

检查独立版IE的兼容性视图设置(工具>兼容性视图设置)。您的页面是否列在“显示在兼容性视图列表中的站点”中,或者“在兼容性视图中显示所有站点”的框已被选中?即使将该注册表值设置为8000,WebBrowser控件仍然遵守兼容性视图设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接