IE 6性能与干净,不引人注目的Javascript
作者:互联网
通常我喜欢保持我的HTML代码干净,语义和免费的Javascript或CSS.我在顶部包含了我的.JS和.CSS文件,在DOM元素的顶部包含了图层功能.
积极的是:
>关注的建筑分离
>不支持Javascript或CSS的优雅降级
>搜索引擎的友好性
有一个主要的负面因素:
> IE 6中的性能问题
因为所有事件都通过访问DOM的Javascript代码附加到元素,所以IE中的性能会受到影响.
使用jQuery(恰好是我最喜欢的Javascript框架)时尤其如此.
所以看起来我有两个选择:要么保持代码好又整洁,并让IE 6用户(大约20%的用户群)抱怨,或者“去规范化”代码以提高IE 6的性能.
在这种情况下是否存在“中途”?还是我注定了?
注意:我不是说我的性能问题是由于在单独的文件中使用Javascript引起的.
我可以在IE中实现精彩的性能,同时将其保存在单独的文件中.
问题是,我仍然需要将实际的事件处理程序放入HTML中的“onclick”属性中.例如:
<span onclick="doSomething()">More...</span>
如果我能写下来会更好:
<span id="more-button">More...</span>
然后使用以下命令在Javascript中单独分配它:
$("#more-button").click(doSomething);
不幸的是,这似乎对IE6性能不利.
解决方法:
在YUI Theatre的一个talk中,Joseph Smarr讨论了性能,并表示可以在代码中出于性能原因而不是找到DOM元素然后附加事件处理程序而在代码中使用onmousedown处理程序等.但是,我不知道采取什么措施来加快速度.用于不显眼的性能提升的其他技术是(EIDT:注意它们与浏览器无关,因此不限于IE):
>使用onmousedown而不是onclick. Smarr说两次事件发射之间有100毫秒左右的时间.
>感知性能:使用window.setTimeout(visualFeedback,0)提供即时视觉反馈.这让浏览器可以立即绘制一些图形变化,让用户知道发生了什么.
>当你必须遍历DOM时,将中间结果缓存到一个变量中以重用它们(猜猜你知道那个).
还有一个demo显示前两点的好处.顶部的按钮使用onclick和正常执行,下面的按钮使用onmousedown和setTimeout(func,0).
标签:html,javascript,performance,cross-browser,internet-explorer-6 来源: https://codeday.me/bug/20190827/1742067.html