18

Chrome Inspector でイベント リスナーを確認できることは知っていますが、デバッグ作業を行っているところ、非常に多くのイベント リスナーが横たわっています。コードを編集せずに一部を無効にしたいと考えています。

ここに画像の説明を入力

Webkit インスペクタからイベント リスナをすばやく無効にする方法はありますか?

おそらくremoveEventListener、リスナーのコンソールにコードを入力してみてください。どうすればいいですか?たとえば、上記の「クリック」リスナーを削除するにはどうすればよいですか

4

5 に答える 5

16

getEventListeners(element).click[index].listener(WebKit コンソールで) リスナーへの参照を取得するために使用できます。

したがって、最初のリスナーを削除するには、次のようにします。

document.removeEventListener('click', getEventListeners(document).click[0].listener)

同様に、すべてのリスナーを削除するには、次の関数を使用できます。

function removeEventListeners(element, listenerMap) {
    Object.keys(listenerMap).forEach(function (name) {
        var listeners = listenerMap[name];
        listeners.forEach(function (object) {
            element.removeEventListener(name, object.listener);
        });
    });
}

removeEventListeners(document, getEventListeners(document))
于 2015-08-24T21:24:03.843 に答える
4

申し訳ありませんが、(少なくとも当分の間は) 運が悪いです。removeEventListener引数として正確なリスナー Function オブジェクトが必要であり、DevTools ではリスナー関数を把握することはできません。

この機能が絶対に必要な場合は、http://new.crbug.com (Chrome に対して) または http://bugs.webkit.org (WebKit に対して推奨される方法) でバグを報告ください。

于 2012-06-15T12:24:49.053 に答える
1

単に:

getEventListeners(document).click[0].remove()

これは他の要素でも機能します。

getEventListeners($('#submit-button')[0]).click[0].remove()

その他の種類のイベント:

getEventListeners($('#login-form')[0]).submit[0].remove()
于 2015-10-31T05:30:01.983 に答える