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

ret*_*ent 1 c# jquery jquery-plugins webbrowser-control smooth-scrolling

我在winforms应用程序中使用WebBrowser控件和Smooth Div Scroll来渲染html选框.我下载了样本并添加了

autoScrollingInterval: 3
Run Code Online (Sandbox Code Playgroud)

$("div#makeMeScrollable").smoothDivScroll({
    autoScrollingMode: "onStart"
});
Run Code Online (Sandbox Code Playgroud)

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

是什么导致了这个问题?

Erx*_*der 12

据我所知,您正在处理的问题是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>软件> 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.这只是通过推断他们过去所做的事情来猜测.

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