7

WPF WebBrowser 控件是否取决于安装在用户机器上的 IE 版本,还是使用跨机器一致的单独库?我读过它只在 IE7 模式下呈现,但我想确保没有安装 IE 或由于某种原因仍在使用 IE6 的用户不会有任何问题。

4

2 回答 2

13

WebBrowser的MSDN 注释表明它重新托管了 IE ActiveX 控件:

WebBrowser 控件在内部实例化本机 WebBrowser ActiveX 控件。

WebBrowser ActiveX 控件更广为人知的是Shdocvw.dll. 这反过来包装了Mshtml.dll,可能还有其他 DLL 给您的环境。重新托管此控件的一个警告是它的 Browser Emulation 设置

对于托管 WebBrowser 控件的应用程序,默认值为7000. 要使用注册表控制此功能的值,请将可执行文件的名称添加到以下设置中,并将值设置为与所需设置相匹配。

0x7000表示IE7兼容模式。因此,如果您希望 WPF 应用程序使用其他模式呈现,则需要更新注册表,如改编自此示例

[HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword:2328
于 2012-05-01T19:28:01.177 回答
0

我在带有 IE11 的机器上创建了一个带有 WebBrowser 控件的 WPF 应用程序,并得到了这个用户代理字符串:

user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; .NET CLR 1.1.4322)

我在带有 IE10 的机器上创建了一个带有 WebBrowser 控件的 WPF 应用程序,并得到了这个用户代理字符串:

user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)

Trident/7.0 表示 IE11,Trident/6.0 表示 IE10。有关用户代理字符串的更多信息

带有 IE10 的系统的页面呈现方式也与带有 IE11 的系统不同。我还使用每个系统上的独立 IE 浏览器验证了这一点。

我还没有在没有 IE 的系统或运行 IE6 的系统上尝试过,但似乎 WebBrowser 控件与系统上当前安装的 IE 版本有关。

于 2016-11-08T15:41:46.460 回答