如何检测浏览器控制台/检查器是否已打开
How to detect if browser console / inspector is *open*?
确定用户是否拥有浏览器控制台(即firebug、webkit检查员,歌剧蜻蜓)打开?
(也就是说,我对仅仅检测脚本中console
对象的存在不感兴趣。我想知道用户什么时候真正打开了调试器面板。理想情况下,在主要浏览器(IE/Safari/Chrome/Firefox…,如果可能的话,甚至是移动浏览器)中,
如果您愿意为用户接受干扰,您可以使用调试器语句,因为它在所有主要浏览器中都可用。
附带说明:如果你的应用程序的用户对控制台的使用感兴趣,他们可能熟悉开发工具,并且不会对它的出现感到惊讶。
简而言之,该语句充当断点,只有当浏览器的开发工具处于状态时才会影响UI。
下面是一个测试示例:
<body>
<p>Devtools is <span id='test'>off</span></p>
<script>
var minimalUserResponseInMiliseconds = 100;
var before = new Date().getTime();
debugger;
var after = new Date().getTime();
if (after - before > minimalUserResponseInMiliseconds) { // user had to resume the script manually via opened dev tools
document.getElementById('test').innerHTML = 'on';
}
</script>
</body>
免责声明:我最初发布了这个可能重复的问题的确切答案
由于安全原因,这在Javascript中是不可能的。你需要创建一个浏览器插件,如果你想要跨浏览器支持,这显然不是一个可行的解决方案。
然而,这个家伙为Chrome想出了一个棘手的解决方案,尽管我可以想象这是一个长期的解决方案。因为它依赖于控制台启动时代码运行速度较慢的事实:http://blog.guya.net/2014/06/20/how-to-know-when-chrome-console-is-open/
没有必要检查检查器是否打开。
当你打开检查员时,可能会发生一些情况:
- 如果检查员正确,document.body.clientWidth将被更改
- 如果您的检查员在底部,document.body.clientHeight将被更改
- 如果你的检查员在另一个窗口,什么也不做
所以,您应该检查浏览器的宽度。
如果你想在检查器中做点什么,请查看浏览器文档中的devTools:
铬Firefox
相关文章:
- 使用map来检查是否为真'不起作用
- 检查是否存在使用chrome扩展的javascript库
- 检查是否存在任意控制器/操作
- 检查是否已加载原型
- angularJs检查是否输入
- Phonegap应用程序检查是否启用了推送通知
- 检查是否已设置GET变量
- 检查是否可以在另一个数组中找到所有项
- 如何检查是否存在“;没有到主机的路由”;在流式传输视频的过程中一遍又一遍
- Javascript-检查是否设置了cookie
- AngularJs 检查是否未定义和空的最佳实践
- 如何检查是否启用了 javascript 并将其纳入网页
- 检查是否对任何输入文件进行了更改
- 如何检查是否调整浏览器大小的条件
- 重力表格 - gform_post_render检查是否提交
- 检查是否释放了 HTML 按钮
- 循环遍历单选按钮(20 组,每组 3 个),并检查是否选中了每个组
- Jquery Ajax 和 Json:如何检查是否未定义
- jQuery或Javascript检查是否加载了图像
- Heroku+Backbone.js——如何检查是否在生产或开发中