Mootools Multiselect check all在Internet explorer中非常慢
Mootools Multiselect check all is very slow in Internet explorer
当我们在分组多选下拉组件中有许多值(大约100个值)时,单击'All'链接时,我们面临性能问题。
这个问题只在IE8中发生,在其他浏览器中工作良好。在我们最初的分析之后,我们观察到
下面几行multiselect.js文件中的函数changeItemState在IE8中导致了这个问题。你能给我们提供解决这个问题的方法吗?
monitor.set('html', '
+ this.changeMonitorValue(item.getParent()) +
);
monitor.title = this.getHoverTitle(item.getParent());
不确定你什么时候删除了实际的代码,但是当你说你有100个值-特别是getter -这可能是IE8或更低版本的问题。
javascript中的字符串是不可变的。这意味着如果你需要连接100个字符串,它将创建一个新的,添加下一个,并清理100次。这在IE中性能不是很好,因此很多人用Array.join('')
代替:
var foo = 'a' + 'b' + 'c' + 'd', // faster in modern and mobile browsers
bar = ['a','b','c','d'].join(''); // faster by ~50% IE7, IE8
http://jsperf.com/string-concat-vs-array-join-10000/9 然而,数组连接技巧在移动设备,android和现代浏览器中较慢。
另一个优化可以是添加更改处理程序,在表单操作(您的模型)期间将当前值导出到数组中,从而消除了在提交事件中一次获得100个值的需求。
由于节点的父节点是不可变的(很可能),没有必要一直去item.getParent()
,你可以事先做一次,甚至直接引用item.parentNode
来避免函数调用。
post changeMonitorValue
源,可以在那里进行优化,因为它可能是次优的。我想你正在使用http://mootools.net/forge/p/mutiselect?
如果是这样,https://github.com/mlazz/MultiSelect/blob/master/Source/MultiSelect.js可以优化很多。然而,这是插件作者的事情。
要有创意
- 视频HTML没有'无法在Internet Explorer 11上工作
- Internet Explorer缺少占位符支持,特别是密码字段
- Internet Explorer中的文本换行错误
- 为什么我在Internet Explorer上看不到html元素
- 通过javascript操作图像,非常简单
- internet explorer 8兼容模式下的Youtube api错误
- 当浏览器控制台未打开时,为什么要求会导致Internet Explorer 9超时
- Internet Explorer 8. Events
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- element.dataset in Internet Explorer
- Facebook FB.init”;访问被拒绝”;在Internet Explorer 11中
- JavaScript不适用于internet explorer和Firefox,但适用于谷歌
- 在Internet Explorer中,向所选内容添加选项不起作用
- 在Internet Explorer中从二进制文件打开PDF
- elementproblem internet explorer
- 非常简单的XMLHttpRequest不起作用
- 我可以使用哪些方法在Internet Explorer中禁用Alt+*X*
- 如何在Internet Explorer中使用javascript设置cookie
- 具有多个网格和组合的hbox/vbox布局的ExtJS窗口在Internet Explorer上渲染得非常慢
- Mootools Multiselect check all在Internet explorer中非常慢