gpt4 book ai didi

javascript - 调试 AngularJS Internet Explorer 锁定

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:16 26 4
gpt4 key购买 nike

我遇到了一个 IE10 问题,我可以很容易地复制它。在我的应用程序中跳转几页后,IE 完全锁定(没有“长时间运行的脚本”警告,只是完全卡住)。我必须从任务管理器中将其杀死。我已经禁用了所有附加组件并且有了一个干净的石板。我在一个相当大的工作站上运行(Win7、16GB 内存、i7、yadda yadda)。

它不会在 Chrome 或 Firefox 中卡住。仅限 IE10 和 IE11。

关于我的应用

我正在与一个工业控制系统集成以显示我的系统的事件状态。我有很多 XHR 轮询正在进行(将转移到 WebSocket,但现在,这很容易与我的 API 集成)。每 500 毫秒从端点刷新数据,这会更新页面上的一堆字段。

当应用程序未卡住时,导航起来既美观又快捷。找不到导致卡住的任何特定条件。

在任何给定时间,我的应用程序都有 75 到 400 个 $watches(使用 this answer 计算)。

目前正在运行 AngularJS v1.3.0-rc.4。在 1.2.25 上有类似的锁定。

那么,我的问题

我该如何调试呢?我试过让 F12 开发人员工具保持打开状态,但没有任何内容输出到控制台。运行脚本分析器(Batarang 在 IE 中不可用)显示我在 $digest 中每 10 秒花费大约 200 毫秒(含)。接下来我该尝试什么?

最佳答案

哎呀,我能感同身受。

你能把关注点分开吗?使用不使用 XHR 的模拟服务测试您的前端(带有 ng-repeat 的 DOM 部分),看看您是否遇到同样的问题。您还可以尝试测试 XHR 服务而不将其挂接到您的前端。 (例如,为了测试目的,您可以有一个只有类似 <span>{{myDataArray}}</span> 的测试 View ,以避免 ng-repeat 问题。)基本上,尝试将问题分成两半,看看您是否仍然可以重现该问题.

基本上,我的推理是这样的;如果您模拟您的服务并且仍然每 500 毫秒轮询一次,并且您遇到了问题,那么您可能遇到了 IE 的 DOM 更新问题。如果您没有遇到问题,但您测试了真正的服务并且 IE 卡住,那么 XHR 某处有问题(也许是您的轮询时间?)或者 Angular 的监视系统可能有问题。

我希望我能在这里提供更多帮助,但这就是我要开始的地方。尝试通过剔除一些代码来缩小问题范围。这不会很有趣,但如果您使用 Angular 的最佳实践(即依赖注入(inject)和关注点分离)编写应用程序,它就会不那么痛苦。

TL;DR - “接下来我该尝试什么?”您将不得不开始智能地剔除一些代码,以查看哪些有效,哪些无效。

关于javascript - 调试 AngularJS Internet Explorer 锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26237814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com