Internet Explorer 11 performance with JS
Internet Explorer 11 performance with JS
我有一个由GWT生成的相当复杂的JavaScript,它在所有浏览器(包括IE10)中都运行良好,但在IE11中我面临着性能问题。
激活探查器,我发现最消耗的代码是如何的......(按最消耗的顺序)
clientWidth、offsetHeight,以及具有压轴值的类似方法:
clientWidth 32 秒 (32806ms),只需 60 次调用偏移高度 181 次调用时高度 29 秒
在我看来,我的性能问题的原因在IE11中本地化(考虑到整个代码在IE10中的执行时间约为2秒),除此之外,我自然可以开始优化减少调用次数(如果可能的话)我想了解我使用的方法或其他方法是否有任何问题有谁知道IE11有什么问题?
更新:只是为了给出一个比较项:在文档模式下相同代码中的 clientWidth = 10 它是 15ms...相差 2000 倍,太奇怪了,我找不到 IE 的错误,在文档模式 Edge (11) 与 10 中分析的相同代码、相同方法
更新:使用探查器进行更深入的工作似乎 clientWidth 在我的树中挖掘了更多时间:
我看到:clientWidth -> Layout -> html-> body -> table x -> 生成的父项用于显示:表 -> td -> 表->生成的表用于显示:表 -> td -> 表.......
以此类推了很长时间(我无法到达树的尽头!
有谁知道显示:表格到底是什么意思? 我唯一能猜到的是IE11由于某种原因越来越多地在DOM树上运行以计算宽度...但我猜不出如何打破这个漫长的循环
使用解决方法进行更新:有趣的是(并确认到目前为止所看到的),它存在一种"解决"性能问题的方法:将最外部的div/容器设置为固定大小(至少两个维度中的一个),以使IE更容易计算容器大小并解决每个问题。这是一个有趣的解决方法,在某些情况下可能很有用,不幸的是,就我而言,我需要保持"100%"的大小以适应不同的屏幕......所以不是一个可接受的解决方法
使用可能的字段限制进行更新:似乎涉及cellWidth和cellHeight的大量使用,我的JS几乎为每个div设置了单元格大小和实际大小作为百分比,删除单元格大小似乎将每次调用的大小计算时间减少到1ms!
我不能说我达成了完美的理解,但不知何故我解决了:
首先,使用像素表示大小会有所帮助,但实际和主要问题是我至少设置了 GWT cellHeight="150px" 的一个组件,并且对于相同的元素 Height="100%",这在 JS 和 html 中生成了一个表格,其中 IE 的大小令人困惑,而其他浏览器能够管理它。基本上整个问题是,如果存在不完全线性的东西,则计算尺寸的时间会变得很大,而不会引发任何警告或错误!
- geolocation-marker.js conflict with markerclusterer.js
- timeago.js with datatable and PHP
- Unit-testing multiple use cases with Karma & Mocha.js
- babel with sub js files
- Mouseover event with Bodymovin JS
- Stubbing async.waterfall with Sinon.JS
- django csrf token with js
- Xpath with js and google chrome
- Internet Explorer 11 performance with JS
- Manipualte json with Js
- GMail API with JS AJAX calls
- 阅读更多wordpress with js
- Check for HTML5 with JS
- RE: implementing rest / jquery with JS
- 拖动的最佳方式是什么?Drop with js,就像谷歌地图中的地图一样
- Multi-Filterable Table with JS
- AWS S3 Sync with JS/Node SDK
- SyntaxError with .js and .css - ASP.NET MVC 5
- Divs expanding under other divs on hover with JS - IE8 :
- CSS :hover with JS problem