我需要调试一个使用jQuery的Web应用程序来做一些相当复杂和混乱的DOM操作.有一次,某些与特定元素绑定的事件不会被触发,只是停止工作.
如果我有能力编辑应用程序源代码,我会向下钻取并添加一堆Firebug console.log()语句并注释/取消注释代码片段以尝试查明问题.但我们假设我无法编辑应用程序代码,需要使用Firebug或类似工具完全在Firefox中工作.
Firebug非常善于让我导航和操纵DOM.但到目前为止,我还没有弄清楚如何使用Firebug进行事件调试.具体来说,我只想查看在给定时间绑定到特定元素的事件处理程序列表(使用Firebug JavaScript断点来跟踪更改).但是Firebug没有能力看到绑定事件,或者我太笨了而无法找到它.:-)
任何建议或想法?理想情况下,我只想查看和编辑绑定到元素的事件,类似于今天我可以编辑DOM的方式.
我希望当用户与之交互时,输入字段会触发所有事件.这包括以下内容:
- 点击它.
- 点击它.
- 插入它.
- 从中脱颖而出.
- Ctrl键盘上的+ C和Ctrl+ V.
- 右键单击 - >粘贴.
- 右键单击 - >剪切.
- 右键单击 - >复制.
- 从另一个应用程序拖放文本.
- 用Javascript修改它.
- 使用调试工具(如Firebug)修改它.
我想用它来显示它console.log.这可能在Javascript/jQuery中,如果是这样,我该怎么做?
我正在呼吁e.stopPropagation()我目前申请的所有事件.有没有办法只停止每个事件的传播而不必在每个函数体的开头显式调用该方法?
在jquery中有什么东西可以在触发任何事件时触发函数吗?
我想要这样的事情:
$("*").anyEvent(function(){
$("#error").html("");
});
Run Code Online (Sandbox Code Playgroud) 想象一下,如果我们想让一些元素完全不可分割.
当然,我们可以为click事件绑定一个防止默认值,如下所示:
$('form *').bind('click', function(event) {
event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
但这只是一个事件,还有更多,如悬停,焦点,选择启动等等.
我们可以指定他们都在像"点击重点悬停DBLCLICK模糊选择开始"一条线,但是这并没有太大的意义,是不容易保持.
那么,是否可以绑定事件监听器而不区分事件的类型?也许一些原生的JavaScript听众允许它?
我有一个html表单文本字段,通常处理键上/下事件.但是,请注意,如果您在ios5移动safari中使用麦克风助手为您填写场地,则不会触发按键上/下.
任何人都知道应该绑定什么事件来处理?目前使用jQuery w/o jQuery Mobile(文件大小限制) - 普通JS也会超级.我希望我不需要求助于民意调查.
演示代码的小提琴:http: //jsfiddle.net/jfroom/wAdC8/5/
您可以通过单击文本输入托盘上的小麦克风图标来获取麦克风功能.
提前致谢.
这纯粹是出于调试目的.是否有一个单一的命令
addEventListener('*', myHandler)
Run Code Online (Sandbox Code Playgroud)
在本地的js或
$(document).on('*', myHandler)
Run Code Online (Sandbox Code Playgroud)
在jQuery中,无论什么类型或命名空间都会监听任何事件,并在事件发生时调用myHandler?
或者浏览器自己的开发工具中是否有东西可以让你看到所有的事件?