Javascript 为什么Firefox上的这个页面速度这么慢?
这是我的意思。尝试点击链接(添加侧/轨道,删除),你可以看到我自己的研磨添加/删除一些输入文本Javascript 为什么Firefox上的这个页面速度这么慢?,javascript,jquery,html,firefox,google-chrome,Javascript,Jquery,Html,Firefox,Google Chrome,这是我的意思。尝试点击链接(添加侧/轨道,删除),你可以看到我自己的研磨添加/删除一些输入文本 铬:没问题 使用IE(7):没有问题 对于Firefox(4):哦,天哪,整个界面都很慢 Javascript/jQuery代码(如您所见)非常短,没有什么比这更复杂的了。 为什么会出现这种行为?我尝试了Firebug插件的YSlow插件。我突然想到的一件事是: 降低DOM元素数量的F级 页面上有3203个DOM元素 一个复杂的页面意味着需要下载更多的字节,这也意味着在JavaScript中访问DOM
为什么会出现这种行为?我尝试了Firebug插件的YSlow插件。我突然想到的一件事是: 降低DOM元素数量的F级 页面上有3203个DOM元素 一个复杂的页面意味着需要下载更多的字节,这也意味着在JavaScript中访问DOM的速度较慢。减少页面上DOM元素的数量以提高性能 阅读更多:
也许在页面加载后在javascript中构建DOM元素会有所帮助。评测表明克隆速度非常慢。您是否尝试过使用固定的DOM字符串手动创建元素(而不是使用
.clone()
)并使用委托进行事件处理?在任何浏览器中,这可能会大大提高整体性能
编辑:我所说的手动,是指:
var newElem = $('<div class="trackOn">...</div>');
等等
编辑#2:阅读文档总是有回报的,这里也是:说在jQuery 1.5.0中,复制事件和数据的默认值被错误地设置为
true
。在1.5.1和friends中又回到了false
,所以请尝试使用jQuery 1.6.0或1.5.2。这可能也会有所帮助。您还可以修改clone()调用,手动将false
指定为第一个也是唯一一个参数,以避免再次发生这种情况。对我来说不要慢,尝试禁用扩展Linux上的Firefox 3.6没有问题。升级到jQuery 1.6.1(最新版本)而改用1.5.x将提高速度。。。但这一切都取决于浏览器中的脚本引擎,请记住,FF在后面做了很多事情(我们不需要)。Chrome和Safari是最快的。我试过FF 4.0.1,很好。。。您使用的是哪个版本?刚刚在Firefox 4和Chrome中测试了页面,没有发现任何差异(它们都一样快)。是的,但这很可笑,对于单个克隆来说,性能太慢了()。有些地方不对劲……你说的“用固定的DOM字符串手动创建元素”是什么意思?我克隆的一个HTML元素大约有50-60行,很难把它放在一个字符串中:(它必须克隆所有的子元素,并且每行都有大量的选择,因此这些选择会使它们变慢(因为它必须检查每一行上的事件等)。真的,试着创建一个静态字符串,然后从中重新生成DOM,速度会快得多。没有什么能阻止您使用变量和for循环将所有这些元素串在一起,而不会在页面中留下一个巨大的静态字符串。:-)试过了,jQuery 1.6.1没有任何变化。老实说,是的,我应该使用你的提示加载元素,没有克隆。但这不是我剧本的错(真的,它太慢了)。我在Firefox上看到页面/etc的其余部分非常慢。例如,只需将页面从顶部滚动到按钮,它就会捕捉到:O我认为这是与此版本的兼容性问题。我要试试老一点的。。。
tracklistOnElem.delegate('.trackBotton .addSide', 'click', function() { addSide(this); return false; });
tracklistOnElem.delegate('.trackBotton .addTrack', 'click', function() { addTrack(this); return false; });