我经常想要更改一些关于JS如何更改DOM的相关细节,但我永远无法弄清楚哪个脚本更改了给定标记的功能。如何做到这一点?
例如,在this page上,我想要JS将“selected”类添加到各种标签中,以便将其添加到封闭的li标签中。但是,我不知道如何弄清楚这是在哪里发生的。
澄清:尽管我想回答当前特定的难题,但我更愿意教会自己如何解决这个难题。澄清:有没有办法指向DOM中的某个对象并找出正在/正在访问/修改该对象的脚本?换句话说,“监视”该对象用于JS访问/修改。
答案 0 :(得分:3)
您在WebKit的开发人员工具中需要DOM breakpoints。
它们专为跟踪DOM突变事件而设计 - 例如更改元素的属性(这是您的情况),元素删除或子元素的添加。您可以参考DevTools文档中的tutorial。
在基本情况下,您可能希望使用grep
来搜索代码中的"selected"
等字符串。
答案 1 :(得分:1)
我不知道任何调试工具会在脚本对DOM元素执行操作时告诉您。
(如果有人知道,亲爱的主人请告诉我他们 - 我是一名自由职业者,因此我花了大部分工作时间试图弄清楚别人写的旧的,棘手的DOM操纵JavaScript。)< / p>
您基本上必须搜索页面中包含的每个JavaScript文件,并识别可能正在执行您所看到的操作的行。
如果要将类名添加到元素中,则明显的搜索是针对类名本身,尽管这不能保证起作用。 E.g。
el.className = el.className + 'sel' + 'elected'
如果正在使用jQuery,我肯定会搜索addClass
。
一旦您认为自己找到了正确的路线,那么如果您有权访问JavaScript代码,则可以更改它,看看您的更改是否生效。
(并且,由于查看源仍然是网络的一部分,您可以通过将所有代码保存到您的计算机来访问代码。)