设置定时调试器以 Web 检查难以获取的元素

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

开发者工具(在任何浏览器中)都是 CSS 开发人员的宝贵开发工具。如果您需要查看(并操作)任何给定元素的样式,只需点击几下即可进行快速检查。

右键单击某个内容并选择“检查元素”,或者打开开发者工具并使用其选择工具获取所需内容。

但是……有时在开发者工具中定位您需要定位的元素可能很困难或不可能。与开发者工具本身交互所需的 DOM 事件可能会干扰。

假设我在某个其他元素的 mouseenter 事件上插入了一个元素,然后在 mouseleave 上将其删除。

无论我如何尝试,我都无法定位该新添加的元素以进行检查。

Chrome 开发者工具可以模拟 :hover 样式,但这对我们在这里没有太大帮助。它不会触发 DOM 事件,而只是模拟 CSS 状态。

这非常有用,但对我们这里没有帮助。

技巧是在您需要时触发调试器

当开发者工具打开时,debugger; 语句会冻结 DOM。不再触发任何事件,并且脚本执行完全暂停。

但是……您仍然可以使用开发者工具!

这是您选择其他情况下无法选择的元素并执行所需操作的机会。您可以将该 debugger; 语句直接放在代码中需要的位置(请记住,开发者工具必须打开才能使其工作)。或者(Tim Holman 教了我这个技巧)您可以使用 setTimeout() 直接从控制台触发它。

setTimeout(function() {
  debugger;
}, 3000);
给自己几秒钟的时间来获取所需的 DOM 状态,然后 debugger; 将触发,您可以根据需要进行检查。

我尝试过这种方法,它在 Chrome、Firefox、Edge 和 Safari 中都能正常工作,因此它是一个非常跨浏览器的开发者工具友好技巧。不过,只有 Chrome 和 Safari 允许您在调试器模式下选择元素,因此在 Edge 或 Firefox 中,您可能需要手动遍历“元素”选项卡以找到所需内容。