[解決済み] JavaScript / jQuery のイベントバインディングを Firebug などでデバッグするには?
質問
jQueryを使ってかなり複雑で面倒なことをやっているWebアプリケーションをデバッグする必要があります。 DOM を操作しています。ある時点で、特定の要素にバインドされていたイベントのいくつかが発生しなくなり、単に動作しなくなりました。
もし私がアプリケーションのソースを編集する能力を持っていたら、ドリルダウンして、たくさんの
ファイアバグ
console.log()
ステートメントやコードのコメント/アンコメントの一部を使用して、問題を特定しようとします。しかし、アプリケーションのコードを編集することができず、Firefox で Firebug または同様のツールを使用して完全に作業する必要があると仮定します。
Firebugは、DOMをナビゲートして操作するのに非常に優れています。しかし、これまでのところ、Firebugでイベントデバッグを行う方法を見つけ出すことができません。具体的には、ある時点で特定の要素にバインドされているイベントハンドラの一覧を表示したいだけです(Firebug の JavaScript ブレークポイントを使って変更をトレースします)。しかし、Firebugはバインドされたイベントを見る機能を持っていないか、私がそれを見つけるにはあまりにも間抜けです。)
何かお勧めの方法やアイデアがあれば教えてください。理想的には、今日のDOMを編集できるのと同じように、要素にバインドされたイベントを見たり編集したりしたいです。
どのように解決するのですか?
簡単に言うと、ある時点でイベントハンドラがあなたの要素に付けられたと仮定します(例)。
$('#foo').click(function() { console.log('clicked!') });
このように検査するのです。
-
jQuery 1.3.x
var clickEvents = $('#foo').data("events").click; jQuery.each(clickEvents, function(key, value) { console.log(value) // prints "function() { console.log('clicked!') }" })
-
jQuery 1.4.x
var clickEvents = $('#foo').data("events").click; jQuery.each(clickEvents, function(key, handlerObj) { console.log(handlerObj.handler) // prints "function() { console.log('clicked!') }" })
参照
jQuery.fn.data
(jQueryが内部でハンドラを保存する場所)。
-
jQuery 1.8.x
var clickEvents = $._data($('#foo')[0], "events").click; jQuery.each(clickEvents, function(key, handlerObj) { console.log(handlerObj.handler) // prints "function() { console.log('clicked!') }" })
関連
-
JavaScriptの配列共通メソッド解説
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] JavaScriptでカンマを桁区切りにして数値を表示する方法
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] オブジェクトをメンバーとして、プレーンなJavaScriptオブジェクトをループさせる方法
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] jQueryで名前を指定して要素を選択するには?
-
[解決済み] jQueryでクッキーを設定/解除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] JavaScriptやデバッグでDOMノード上のイベントリスナーを見つけるには?
-
[解決済み] Chrome DevToolsで要素に発生したイベントを表示するにはどうすればよいですか?
-
[解決済み] Chromeで、ある要素にどのイベントがバインドされているかを調べる方法
-
[解決済み] どのJavaScriptイベントが発生したかを知るには?