在我的应用程序中,我使用WebBrowser-Control来显示本地HTML文件。该文件包含jQuery和自定义js-File。
当我用IE(本地)打开文件时,一切正常。但是,如果我在我的应用程序中使用WebBrowser控件显示该文件,则JQuery无法正常工作(某些内容确实有效,$.(...)addClass('abc')
之类的内容不起作用。)
任何人都知道为什么会出现这种情况?我正在使用Navigate()
导航到HTML文件,然后在WebBrowser的文档上使用InvokeScript
来调用使用jQuery的javascript函数。我也尝试通过导航到javascript:
- URL来调用该功能,但该功能也不起作用。
感谢任何帮助
答案 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标准模式显示。