【发布时间】:2014-07-03 17:43:27
【问题描述】:
我们有一个带有 UI 路由器的 Angular.js 应用程序。在任何现代浏览器上,我们的应用程序都非常快。然而,在我们的一个目标设备上,视图更改太慢了(主要是因为它目前正在可怕地执行 JS - 这是我们正在修复的一个附带问题)。
我们看到的主要问题是我们有一个鼠标事件,它通过 $location.path 更改启动视图更改,并且运行时间为 250 毫秒 - 400 毫秒。
我们已经尝试了很多事情,比如放弃我们用来调用代码的 Hammer 事件、剥离应用程序以便只加载一个空白视图、删除我们拥有的所有 XHR 调用、删除 DOM 操作,以及许多其他小实验。
被调用的 jQuery 事件是 jQuery.event.add(特别是 jQuery 1.11.1 的第 4305 行)。
我们希望有人遇到过类似的问题,并且可以帮助诊断会触发过多的删除计时器事件、GC 事件、解析 HTML、请求动画帧、安装计时器和重新计算样式的原因。它们中的每一个似乎都在微秒内或最多
【问题讨论】:
-
有什么方法可以将一些代码隔离到 JSFiddle 中,以便更容易诊断问题所在?如果大部分问题出在 jQuery.event.add 中,我会查看您可能将 eventHandler 添加到 mouseOver/mouseMove 的任何地方
标签: jquery performance angularjs mouseevent hammer.js