13

この面白いバグが発生しており、デバッグ方法がわかりません。サイトにページが読み込まれるたびに、スクロール イベントが発生します。ページは目に見えて動かず、マウスやキーボードを介してスクロールをトリガーしていません。読み取るコード行を配置したため、スクロールイベントが発生していることを知っています

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

案の定、すべてのページで、コンソールのログに小さな「jQuery.Event」メッセージが表示されます。ポイントをブレークすると、コール スタックは jQuery.even.dispatch.apply(eventHandle.elem, arguments) で終了します。

これが質問です。このスクロール イベントの原因を特定するにはどうすればよいですか? スクロールがユーザーによってトリガーされたのか、スクリプトによってトリガーされたのかを教えてくれるjqueryイベントオブジェクトの属性はありますか? この状況で、これを理解するためにあなたは何をしますか?

4

1 に答える 1

2

jQuery はすべてのイベント バインディング データを隠し属性内に隠しているようです。この投稿では、少なくとも何が実行されているかを確認できる方法について説明します。どのファイルのどこにハンドラがあるかを確認するのは、依然としてユーザーの責任です。

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
}
于 2014-08-17T21:22:27.677 に答える