19

我正在尝试调试onFocus附加到页面上一堆文本框的 JavaScript 事件。选择一个文本框然后跳到下一个文本框时会出现该错误。onFocus我正在尝试通过使用 Chrome 开发人员工具在事件中放置一个断点来调试它。我面临的问题是,当我选择一个文本框并且断点被捕获时,Chrome 开发者工具会窃取焦点并且不返回它,所以我无法切换到下一个文本框。有人有解决方法的想法吗?我想我可以诉诸警报语句来打印我需要的所有信息,而无需使用 Chrome 开发者工具......

4

3 回答 3

14

Chrome 开发工具在 Inspector 和网页上都包含一个播放/暂停按钮。使用覆盖可防止焦点落在 Inspector 上。

此外,我发现以下类型的日志记录解决方案比间隔方法更容易跟踪(这要归功于更少的冗余以及能够比间隔更快地发现发生的变化):

$('*').on('focus blur', function(event) {console.log(event.type + " to:"); console.log(document.activeElement);});
于 2015-06-15T19:10:32.143 回答
13

调试棘手情况的一个选项是设置一个间隔来轮询控制台中的焦点。

setInterval(function() {console.log($(':focus')); }, 1000);

在控制台中输入这个(更新它以包含您感兴趣的任何细节),按 Enter,然后在您在 UI 中执行操作时将控制台保留在您可以看到它的位置。

*setInerval() 的 MDN 文档

于 2014-02-24T21:14:51.427 回答
10

你是对的,当你切换回调试页面时,Chrome DevTools 接收焦点并且不恢复它。随时在http://new.crbug.com提交错误(确保以“DevTools:”开头摘要,以便可以尽快将错误分配给适当的团队。)

附带说明一下,console.log()它是一个更好的替代方案,alert()因为它允许格式化输出。

于 2012-01-24T14:53:02.627 回答