Kei*_*rup 6 javascript events listener prototypejs observer-pattern
我正在寻找这个问题的最新答案.
在Prototype 1.6+中似乎不再使用Event.observers(可能是为了避免内存泄漏),那么如何追踪哪些事件监听器附加到元素?
我知道Firebug有一个"下一个中断"按钮,但是在我可以获得我想要的另一个特定元素的行为之前,body元素上有几个鼠标侦听器,所以还有其他方法吗?
我已经更新的答案您链接到更全面的Prototype覆盖面占版本的变化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!') }"
})
Run Code Online (Sandbox Code Playgroud)
事情现在通过元素存储路由:)
Element.getStorage(yourElement).get('prototype_event_registry')会给你一个Prototype的实例Hash,所以你可以做任何你用hash做的事情.
// 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.
Run Code Online (Sandbox Code Playgroud)
请注意,这些是未记录的内部细节,将来可能会更改,因此我不会依赖它们,除非是调试目的.
| 归档时间: |
|
| 查看次数: |
5856 次 |
| 最近记录: |