我一直在我的应用程序中使用getBoundingClientRect()来获取元素的尺寸,而用户正在拖动一个项目。我一直在使用它,并且运行良好。但是,在鼠标移动过程中执行此计算时,我开始遇到主要的性能问题。移动的节点越大,情况就越糟。我使用了Chrome中的配置文件工具,并注意到此函数被包装在用户拖动时触发的鼠标移动事件中,该过程花费了很长时间(每次调用31.4毫秒-将其扩展为每次调用在研究该问题时,我遇到了使用它的其他人,同时也注意到了性能问题(http://dcousineau.com/blog/2013/09/03/high-performance-js-tip/)。
在香草Javascript(绝对没有jQuery)中,我可以用什么替代getBoundingClientRect()?我的前端框架是AngularJS 1.5.8,我已经使用组件构建了该应用程序(希望将来将大型应用程序迁移到NG2)。谢谢!
最佳答案
Element.getBoundingClientRect()
是“香草”,尽管它是规范的working draft的一部分。为了使代码性能更高,请限制调用次数。您引用的提到类似性能的链接仅表示:
从DOM获取任何计算尺寸的所有调用都应缓存或避免。