Skip to main content
 首页 » 编程设计

c#之脚本在 dotnet WebBrowser 控件中运行速度较慢

2024年01月13日28傻小

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

autoScrollingInterval: 3 

到

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

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

是什么导致了这个问题?

请您参考如下方法:

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

让我直接告诉你吧。默认渲染引擎开启 网络浏览器控件已修复,以确保所有兼容性 平台。

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

但是,如果您安装的 IE 版本为 IE 6 或以下,则 使用的渲染引擎是 IE 4.0(不是开玩笑),当然除非你 否则设置。

有一种误解认为 WebBrowser 控件使用任何 当前已安装(当前 IE 版本)但这不是真的,因为 他们这样做是为了减少向后兼容性问题。你可以看到 (作为证明)这确实是你的问题 www.whatsmyuseragent.com 在您的普通浏览器中,然后转到 在您的 WebBrowser 控件中再次访问该网站,您将看到它 说 MSIE 7.0 :)。

您可以将其设置为使用当前安装的互联网版本 资源管理器,使用页面内的 META 标记,或编辑注册表 在 webbrowser 控件将运行的机器上(编辑 Current_User 和 Local_Machine 都可以。

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

如果你想利用 IE9 的新特性,你应该添加 元标记 <meta http-equiv="X-UA-Compatible" content="IE=9" > 在<head>里面HTML 页面的标记。

必须在任何指向 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 到来时 out,所有的默认渲染引擎将保持为 IE 11 IE 11 和 IE 14 之间的 IE 版本。这只是一个猜测 推断他们过去所做的事情。

有关您可以将注册表设置为的值的更多信息,check this out: