在开发中,偶尔会遇到类似这样的问题:页面上的一个DOM元素被改了属性,但是我们却不知道是哪个脚本更改的。
有的同学会说,可以使用源代码搜索的办法。的确,对于一个相对简单的页面,这个方法时常奏效。但是,对于构成相对复杂的页面(比如页面嵌入很多脚本文件和片段、使用了大段面向对象的实现、隐藏了实现的代码),可能找起来就不那么顺利了。
在Javascript调试中,我们经常会使用到断点调试。其实,在DOM结构的调试中,我们也可以使用断点方法,这就是DOM Breakpoint(DOM断点)。
具体的使用方法:
1. 在Chrome浏览器中,打开开发者工具,先选中一个页面元素,然后点击鼠标右键,依次点击菜单中的”Break on …”——勾选“Attributes modifications”。刷新页面,当该元素的属性发生变化时,就会暂停脚本的执行,并且定位到改变发生的地方。
2. 在安装了firebug 的Firefox 浏览器中,打开firebug,切换到“HTML”选项卡,选中需要监视的DOM元素,鼠标右键,勾选菜单中的“在属性改变时中断”。这样就成功添加了一个HTML 断点。刷新页面后,firebug 也会帮助我们定位到更改该元素属性的代码。
除了可以监视DOM元素本身的属性变化,Chrome 和 Firebug 还可以监视其子元素的变化,以及何时元素被删除。
通常我们在调试代码时习惯:修改代码→刷新页面→重新检查,这么一个循环。但其实" b>临时修改="b>临时修改" chrome="chrome" console="console" ctrl+s)就可以立即生效,结合="ctrl+s)就可以立即生效,结合" div> 如图所见,在元素审查的="div> 如图所见,在元素审查的" div>
DOM断点,顾名思义就是在DOM元素上添加断点,进而达到调试的目的。而在实际使用中断点的效果最终还是落地到JS逻辑之内。
DOM断点的添加流程为:打开Elements面板——定位到相关DOM节点——单机鼠标右键,弹出侧边栏——鼠标移动到
DOM断点的添加流程为:打开Elements面板——定位到相关DOM节点——单机鼠标右键,弹出侧边栏——鼠标移动到
Break on...
上,选择相应选项
subtree modifications
/
attributes modifications
/
node removal
即可。
![](https://i-blog.csdnimg.cn/blog_migrate/14057f0b41b07fed4ed81aa32795ebd7.png)
- 子节点修改
- 自身属性修改
- 自身节点被删除
一般选择第二种。
格式化代码(Pretty Print)
![Chrome 断点设置 - hanguokai - 韩国恺的博客](http://img1.ph.126.net/xzuTrMCRsC-XF6u_EcB1eQ==/2518638091625050894.png)
![Chrome 断点设置 - hanguokai - 韩国恺的博客](http://img1.ph.126.net/wEea1CX_LP8NMKHYPrsGOw==/6597894400378218400.png)
![Chrome 断点设置 - hanguokai - 韩国恺的博客](http://img0.ph.126.net/kkD-kf5OA0XItqMUIr_1NQ==/994451092736837238.png)