1

我在我的 winforms 应用程序中使用 WebBrowser 控件和Smooth Div Scroll来呈现 html 选取框。我下载了示例并添加了

autoScrollingInterval: 3

$("div#makeMeScrollable").smoothDivScroll({
    autoScrollingMode: "onStart"
});

让它移动得更快。当我在 IE 中打开示例时,它工作得很好,但是当我使用 WebBrowser 控件并调用导航方法时,滚动条的移动速度要慢得多。

是什么导致了这个问题?

4

1 回答 1

11

据我了解,您正在处理的问题是 IE 7 标准模式下 WebBrowser 控件呈现的版本控制问题,而您在 IE 中使用的实际 WebBrowser 是 IE 8 或 IE 9,它在那里工作,但您的 JQuery /JavaScript 或 CSS 包含在 IE 7 中不起作用。

让我直接告诉你。webbrowser 控件上的默认渲染引擎已修复,以确保跨所有平台的兼容性。

基本上,如果您安装的浏览器是 IE 7 - IE 9,那么使用的渲染引擎只有 IE 7.0(默认情况下)。

但是,如果您安装的 IE 版本是 IE 6 或更低,那么使用的渲染引擎是 IE 4.0(不是开玩笑),当然除非您另外设置。

有一种误解认为 WebBrowser 控件使用当前安装的任何内容(当前 IE 版本),但事实并非如此,因为它们这样做是为了减少向后兼容性问题。您可以通过在普通浏览器中访问 www.whatsmyuseragent.com,然后在 WebBrowser 控件中再次访问该网站来看到(作为证据)这确实是您的问题,您会看到它显示 MSIE 7.0 :)。

您可以将其设置为使用当前安装的 Internet Explorer 版本,或者在页面中使用 META 标记,或者在运行 webbrowser 控件的机器上编辑注册表(编辑 Current_User 和 Local_Machine 都可以)。

WebBrowser 控件将(通常)使用您安装的任何版本的 IE,但出于兼容性原因,它将默认以 IE7 标准模式呈现页面。

如果您想利用新的 IE9 功能,您应该在HTML 页面<meta http-equiv="X-UA-Compatible" content="IE=9" > 的标签内添加元标签。<head>

这个元标记必须在任何指向 CSS、JavaScript 文件等的链接之前添加,这些链接也可以<head>正常工作(只有其他<meta>标记或<title>标记可以在它之前)。

另一种方法是将注册表项添加到:

HKLM > SOFTWARE > Microsoft > Internet Explorer > Main > FeatureControl > FEATURE_BROWSER_EMULATION

并在其中添加值为“9000”的“YourCompiledApplicationName.exe”,以强制 WebBrowser 控件以 IE9 模式显示页面。尽管您也可以使用其他值,但请注意,这些文档并不完全准确,因为无论您使用什么值,似乎都不可能让页面在 IE 8 模式下呈现。(注意:YourCompiledApplicationName.exe 必须是您编译的包含 WebBrowser 控件的 EXE 文件名,它仅适用于您已包含在注册表中的文件名)。此外,添加 vshost.exe 和 YourCompiledApplicationName.exe.svchost 不会有什么坏处,因此它在通过您的 IDE 运行时可以工作,而且,如果您的应用程序在 64 位 Windows 下运行,您可能还应该在以下注册表路径下设置以下 DWORD到相同的值(根据 32 位路径):

HK[LM|CU] \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION

将注册表项添加到 HKCU 而不是 HKLM 中的同一路径也将起作用 - 这很有用,因为写入 HKLM 需要管理员权限,而 HKCU 不需要。

不知道IE 10.0什么时候出来,WebBrowser控件默认引擎是否会转到10.0(如果系统上当然安装了10.0),或者即使在IE 10.0发布后它仍然是IE 7.0,我们将不得不看到它出来。但是,如果我们根据以前的经验猜测,我怀疑 IE 10.0 将是使用 IE 7.0 渲染引擎的最后一个版本,而当 IE 11 出来时,对于 IE 11 之间的所有 IE 版本,默认渲染引擎将保持为 IE 11 & IE 14. 这只是通过推断他们过去所做的事情的猜测。

有关可以将注册表设置为的值的更多信息,请查看:

于 2012-09-22T22:01:03.193 回答