Javascript如何查找源代码滚动事件

时间:2012-09-13 18:06:04

标签: javascript jquery events scroll

我有这个有趣的错误,我不知道如何调试它。每次页面加载我的网站时,都会触发滚动事件。页面没有明显移动,我当然不会通过鼠标或键盘触发滚动。我知道滚动事件正在触发,因为我放了一行代码

$(window).bind('scroll', function (e) {console.log(e)});

在每个页面上我都能在控制台的日志中收到一条“jQuery.Event”消息。当我断点时,我的调用堆栈结束于jQuery.even.dispatch.apply(eventHandle.elem,arguments),这并没有给我带来帮助。

这是问题所在。如何找出触发此滚动事件的内容? jquery事件对象中是否有一个属性可以告诉我滚动是由用户触发还是由脚本触发?在这种情况下你会怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

好吧,看起来jQuery隐藏了隐藏属性中的所有事件绑定数据。 This post描述了让您至少了解正在运行的内容的方法 - 您仍然有责任找出处理程序在哪个文件中的位置。

在涉及scroll事件的情况下:

var scrollHandlers = jQuery._data(window, 'events')['scroll'];
for (var i = 0; i < scrollHandlers.length; i++) {
    console.error(scrollHandlers[i].handler);  // or console.debug, whatever proves they exist
}