主干app中的所有事件触发两次.随机发生

All events in Backbone app fire twice. Occurs randomly

本文关键字:两次 随机 app 事件 主干      更新时间:2023-09-26

首先介绍一下背景。我很确定这不是因为僵尸的观点。我使用requireJS,并且在任何给定的时间只有一个主视图实例。

此外,这种行为是随机的,我甚至一次也无法复制它,但我的几个用户指出了这一点,并向我展示了一个视频,其中每次点击应用程序似乎都会触发两次处理程序。咔哒声发生得非常非常快。这不可能是鼠标的机械故障,因为已经有多台机器报告了这个问题。不管怎样,这些报告都是来自那些拥有高速互联网连接的人。

应用程序的两个实例是否可能同时运行?我可以采取什么步骤来隔离脊柱的这种问题?

为文字墙道歉,如果我可以提供任何额外的信息或相关的来源,请告诉我。

编辑:我已经设法在Opera中重新创建了这个。在逐步完成触发两次的部分代码之后(我正在检查打开一个模态的代码),我能够查看触发事件的视图。两个视图都有相同的CID,所以这不能归因于僵尸视图,对吧?

根据我的经验,这几乎总是与僵尸视图或其他DOM泄漏有关。我最好的朋友在这种情况下,如果Web Inspector Profiles -> Take Heap Snapshot并寻找分离的DOM树(在搜索字段中键入"detached")。

它可能出现在复杂的情况下,即使你认为你只实例化一次视图。

除此之外,您还必须向我们展示一些代码;)

这里的问题是我正在运行一个报告JS错误的第三方库。由于他们的错误,页面上的事件绑定受到了影响,这导致了应用程序内部的混乱。

这个故事的寓意-每当你遇到一个你觉得不可能的错误时,一个接一个地删除你的第三方依赖,并确认问题是从你的错误开始的。