检测所有浏览器中是否已打开console/devtools

Sup*_*ser 8 javascript browser jquery cross-browser

我正在尝试创建一个在打开或关闭任何浏览器控制台时运行的脚本.有没有办法检测所有浏览器(Firefox/IE/Chrome/Safari/Opera)中的浏览器控制台是否通过JavaScript,jQuery或任何其他客户端脚本打开?

ash*_*awg 9

devtools-detect应该做的工作。尝试简单的演示页面。

devtools-detect? 检测 DevTools 是否打开,以及它的方向。

支持的浏览器:

  • Chrome、Safari、Firefox 和 Opera 中的开发者工具

注意事项:

  • 如果 DevTools 未停靠(单独的窗口),则不起作用,并且如果您切换任何类型的侧边栏,可能会显示误报。

  • 它检查窗口大小,并且它可以正常工作,直到您将开发工具从窗口中分离出来,然后它将不再工作:)。 (7认同)
  • 它不检测开发工具;它检测窗口大小的突然变化,更正确的名称是“sudden-window-size-change-detect” (4认同)
  • 不适合我。但是,正如 Fabio 所说 - 我已经分离了 DevTools。 (2认同)

rem*_*tec 5

如果您愿意接受用户的干扰,则可以使用debugger语句,因为该语句所有主流浏览器中可用。

旁注:如果您的应用程序用户对控制台的使用感兴趣,则他们可能熟悉开发工具,并且不会对它的出现感到惊讶。

简而言之,该语句充当断点,并且仅在打开浏览器的开发工具时才会影响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>
Run Code Online (Sandbox Code Playgroud)


Sou*_*han 4

出于安全原因,我认为这在 JS 中是不可能直接实现的。但在这里, 他们声称这是可能的,并且当您希望在 DevTools 打开时发生一些特殊的事情时很有用。比如暂停画布、添加样式调试信息等。

但正如 @James Hill 在this中所说,我也认为即使浏览器选择让客户端访问此信息,它也不会是一个标准实现(跨多个浏览器支持)。也可以在这里尝试一下这个