【问题标题】:What tool can I use to find out what JavaScript events are being called when leaving a web page?我可以使用什么工具来找出离开网页时调用了哪些 JavaScript 事件?
【发布时间】:2009-03-11 22:18:33
【问题描述】:

我有一组包含大量 JavaScript 的页面:表格排序、AJAX 调用、自动完成、动态隐藏和显示页面区域等......我看到的问题是当数据说页面变大离开页面时会注意到延迟(浏览器冻结)。当用户点击离开、关闭浏览器或执行表单提交时,就会发生这种延迟。我想看看问题是否是由 JavaScript 引起的。我可以使用什么工具来找出答案? Firebug 在这种情况下似乎不起作用。

代码库中唯一提到卸载的地方是 jquery.js 和 ui.tabs.js (jquery ui)

【问题讨论】:

标签: javascript performance browser debugging


【解决方案1】:

是否附加了任何 onunload 事件处理程序(到正文、窗口、表单等)?如果是这样,这将是一个很好的调查起点。

[编辑]: 显然 jQuery 运行一个循环,解除绑定到每个元素的所有事件。这是为了防止 IE 中的内存泄漏(由于引用它们正在侦听的元素的事件处理程序闭包而创建)。如果您的 DOM 非常复杂,这可能会造成延迟。

您可以尝试在 jQuery 代码中注释掉这部分,看看是否是导致问题的原因?

[编辑 2]: 在较新版本的 jQuery(1.3+)中,窗口卸载似乎得到了改进。你用的是什么版本?

【讨论】:

  • 目前使用的是1.2.6,看来是时候升级了。
【解决方案2】:

Inline Code Finder 是一个 firefox 插件(实际上它是一个 firebug 插件),它可以直观地向您展示在何时何地调用了哪些事件。

【讨论】:

    猜你喜欢
    • 2012-04-21
    • 1970-01-01
    • 2015-04-23
    • 2012-11-18
    • 2014-03-08
    • 1970-01-01
    • 2012-01-04
    • 2010-12-02
    • 1970-01-01
    相关资源
    最近更新 更多