Web浏览器控件的行为与IE不同

时间:2012-11-13 15:54:14

标签: c# javascript .net html browser

在我的应用程序中,我使用WebBrowser-Control来显示本地HTML文件。该文件包含jQuery和自定义js-File。

当我用IE(本地)打开文件时,一切正常。但是,如果我在我的应用程序中使用WebBrowser控件显示该文件,则JQuery无法正常工作(某些内容确实有效,$.(...)addClass('abc')之类的内容不起作用。)

任何人都知道为什么会出现这种情况?我正在使用Navigate()导航到HTML文件,然后在WebBrowser的文档上使用InvokeScript来调用使用jQuery的javascript函数。我也尝试通过导航到javascript: - URL来调用该功能,但该功能也不起作用。

感谢任何帮助

2 个答案:

答案 0 :(得分:3)

这是一个很长的镜头,但我已经看到WebBrowser控件由于某种原因默认使用旧版IE渲染引擎的情况,即使安装了较新版本的IE。一些旧版本的IE可能会出现jquery问题。

尝试添加一些js以确保它使用您期望的IE版本。

http://obvcode.blogspot.com/2007/11/easiest-way-to-check-ie-version-with.html

答案 1 :(得分:2)

Rick Strahl就这个问题和解决方案写了一篇很好的文章:

http://www.west-wind.com/weblog/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version

您必须设置两个注册表项,一个用于32位,一个用于64位应用程序。

  

32位:

     

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\互联网   资源管理器\ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION

     

值键:yourapplication.exe

  

64位:

     

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\互联网   资源管理器\ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION

     

值键:yourapplication.exe



将此键设置为的值(taken from MSDN here)为十进制值:

  

9999(0x270F)Internet Explorer 9.网页显示在IE9中   标准模式,不管!DOCTYPE指令。

     

9000(0x2328)Internet Explorer 9.包含的网页   基于标准!​​DOCTYPE指令以IE9模式显示。

     

8888(0x22B8)网页以IE8标准模式显示,   不管!DOCTYPE指令。

     

8000(0x1F40)包含基于标准的网页!DOCTYPE指令   以IE8模式显示。

     

7000(0x1B58)包含基于标准的网页!DOCTYPE指令   以IE7标准模式显示。