Hi all, 和很多其他框架一样,调试用了 jQuery 的代码比没用 jQuery 的代码复杂了很多,首先是调着调着就进了 jQuery 文件的里面,然后打开任意元素的 Event Listeners(我用的是 Chrome 的调试工具)得到长长的一张列表,几乎所有事件都被监听过了,而且都是 jQuery 的监听,不知道实际是否真的被监听,callback 入口实际上在哪里。想请教各位 Javascript 高手是如何解决这些问题的,谢谢。
代码里直接写 debugger
, 打开 chrome development tools 执行到那里自动就断了。
简单情况直接 console.log
调试你得先看自己激活了什么事件,页面逻辑基本都是 event driven 的。找到 id
className
基本就知道 callback 在哪里了。你一般都不会调试 jQuery, 只会调试自己的业务逻辑。
jQuery 的 selector
是关键。
jasminejs 可以满足你的需求。边写边学很快。phantomjs.org 还提供 a headless WebKit with JavaScript API.
@shiren1118 写测试才是解决调试的办法。实在不会写,先在 it 里用 console.log 打出来看看,再加上 except matches 函数验证。之后大脑的负担就会减轻,有问题就跑一个测试,没抓到的问题加一个用例。
@iBachue 我的意思是你先遇到的问题,用普通 console.log 方法都搞不定的代码块写测试,总比你一行一行调试来的快吧。并且调试过程中的思路你都留了下来,对代码理解也是一次梳理。代码只有理解意思后才可能找到问题。目前楼主的代码已经相当规模,还不知道有没有用到 Copy & Paste 的代码,第三方的代码片段,你不太可能一步一步去 debuger。
看下 http://ruby-china.org/topics/6076 这个帖? 用 chrome inspector 调试的话 可以 ctrl+shift+f 打开搜索面板,然后搜事件触发元素的 id 或 class,应该就能很快找到对应的 js 代码了