2012-11-22 29 views
3

有没有办法拦截浏览器中的所有UI(触摸/点击等)事件(用于监视/调试等) - 在JavaScript代码和任何chrome工具中 - 都可以。举个例子,我要将某些事件(通过添加一些属性),并抓住它,当它被处理(甚至不止一次)看到堆栈跟踪等拦截浏览器中的所有UI事件

更新:每一个事件寻找拦截,即使不是代码中的某处传播(冒泡/捕获)

回答

3

您可以从Event构造函数中获取事件类型的列表。

Object.keys(Event).forEach(function (etype) { 
    document.addEventListener(
     etype.toLowerCase(), console.log.bind(console), false 
    ); 
}); 

Event interface暴露事件类型常数以下(在桌面的Safari):

["MOUSEOUT", "FOCUS", "CHANGE", "MOUSEMOVE", 
"SELECT", "BLUR", "KEYUP", "MOUSEDOWN", "MOUSEDRAG", 
"MOUSEUP", "MOUSEOVER", "CLICK", "DBLCLICK", 
"KEYDOWN", "KEYPRESS", "DRAGDROP"] 
+0

什么,如果不传播的特定事件(鼓泡/捕获)中的代码的某处(问题编辑)? – BreakPhreak

+1

@BreakPhreak,那么你可以使用WebInspector。请参阅时间表选项卡,JavaScript和事件面板。它记录所有订阅的事件处理程序。 – katspaugh

+0

只是在这个页面上试了一下(点击上面的点的数字为你的答案) - 看起来像它的作品! :) – BreakPhreak