0

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

当我用 IE(本地)打开文件时,一切正常。但是,如果我在我的应用程序中显示带有 WebBrowser 控件的文件,则 JQuery 不能完全正常工作(有些东西可以正常工作,$.(...)addClass('abc')但不能正常工作)。

任何人都知道为什么会这样?我Navigate()用来导航到 HTML 文件,然后 InvokeScript在 WebBrowser 的文档上使用来调用使用 jQuery 的 javascript 函数。我还尝试通过导航到一个javascript:不起作用的 -URL 来调用该函数。

感谢您的帮助

4

2 回答 2

3

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

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

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

于 2012-11-13T16:03:43.160 回答
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\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

值键:yourapplication.exe

 

64位:

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

值键:yourapplication.exe



将此键设置为(取自 MSDN here)作为十进制值的值:

9999 (0x270F) Internet Explorer 9。无论 !DOCTYPE 指令如何,网页都以 IE9 标准模式显示。

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

8888 (0x22B8) 网页以 IE8 标准模式显示,无论 !DOCTYPE 指令如何。

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

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

于 2013-02-05T15:42:26.560 回答