2009-09-14 27 views
6

私はthis questionへの更新の答えを探しています。更新:プロトタイプのDOMノードでイベントリスナーを見つける方法は?

イベントリスナーを要素に添付されている何1.6+プロトタイプに(おそらくメモリリークを回避するため)Event.observersはもはや使用されているものと思わないので、どのように私は今追跡するのですか?

私はFirebugが "次のブレーク"ボタンを持っていることを知っていますが、いくつかのマウスリスナが他の特定の要素に必要な動作になる前に実行されるbody要素にあります。

Element.getStorage(yourElement).get('prototype_event_registry')はあなたにPrototypeのHashのインスタンスを与える)ので、あなたは、ハッシュで行うあらゆる処理を実行することができます

答えて

7

回答you linked toをより包括的に変更して、バージョン1.6.0から1.6.1への変更を反映しました。

それはそこの間で非常に厄介だが、1.6.1は、ややきれいです:

var handler = function() { alert('clicked!') }; 
$(element).observe('click', handler); 

// inspect 
var clickEvents = element.getStorage().get('prototype_event_registry').get('click'); 
clickEvents.each(function(wrapper){ 
    alert(wrapper.handler) // alerts "function() { alert('clicked!') }" 
}) 
+0

他の回答も更新するThx!私はそれが私がGoogleを介して行ったようにそれを見つけた他の人を助けるだろうと確信しています。 –

6

物事は今や要素ストレージを介してルーティングされます。

// to see which event types are being observed 
Element.getStorage(yourElement).get('prototype_event_registry').keys(); 

// to get array of handlers for particular event type 
Element.getStorage(yourElement).get('prototype_event_registry').get('click'); 

// to get array of all handlers 
Element.getStorage(yourElement).get('prototype_event_registry').values(); 

// etc. 

が、これらは将来変更される可能性がありますので、私はそれ以外に依存しないだろう、おそらく、デバッグ目的で文書化されていない内部の詳細であることに注意してください。

+0

1 Thxを、kangax。あなたが最初だったが、クレセントフィッシュは、私が必要としたバージョン1.6.0.Xでより完全な答えを出しました。 –

関連する問題