代码之家  ›  专栏  ›  技术社区  ›  reticent

dotnet WebBrowser控件中的脚本运行速度较慢

  •  1
  • reticent  · 技术社区  · 12 年前

    我使用WebBrowser控件和 Smooth Div Scroll 在我的winforms应用程序中渲染一个html字幕。我下载了样本并添加

    autoScrollingInterval: 3
    

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

    以使其移动得更快。当我在IE中打开示例时,它运行得很好,但当我使用WebBrowser控件并调用导航方法时,滚动条移动得慢得多。

    是什么导致了这个问题?

    1 回复  |  直到 12 年前
        1
  •  11
  •   iruvar    11 年前

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

    让我直截了当地告诉你。上的默认渲染引擎 web浏览器控件已修复,以确保所有控件之间的兼容性 平台。

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

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

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

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

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

    如果你想利用IE9的新功能,你应该添加 元标记 <meta http-equiv="X-UA-Compatible" content="IE=9" > 内部 <head> 标记。

    此元标记必须添加在任何指向CSS、JavaScript的链接之前 文件等也在您的 <头部> 正常工作(仅 另外 <meta> 标签或 <title> 标签可以在它之前)。

    另一种选择是将注册表项添加到:

    HKLM>软件>微软>Internet Explorer>主要> 功能控制>功能_浏览器_模拟

    在其中添加值为“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\Wow6432节点\Microsoft\Internet Explorer\Main\ 功能控制\FEATURE_BROWSER_EMULATION

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

    不确定当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 11&即14。这只是猜测 推断他们过去的所作所为。

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