脚本WebBrowser控件中的脚本运行速度较慢
我在winforms应用程序中使用WebBrowser控件和Smooth Div Scroll来渲染一个html选框。 我下载了样本并添加了
autoScrollingInterval: 3
至
$("div#makeMeScrollable").smoothDivScroll({ autoScrollingMode: "onStart" });
让它移动得更快 当我在IE中打开示例时它工作得很好但是当我使用WebBrowser控件并调用导航方法时,滚动条移动得慢得多。
是什么导致了这个问题?
据我所知,您正在处理的问题是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标准模式呈现页面。
如果您想利用新的IE9function,您应该在HTML页面的标记内添加元标记
。
必须先添加此元标记,然后才能在 CSS,JavaScript文件等任何链接之前添加(但只有其他
标记或
标记可以在它之前)。
另一种方法是将注册表项添加到:
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.这只是通过推断他们过去所做的事情来猜测。
有关可以将注册表设置为的值的更多信息, 请查看以下内容: