【问题标题】:How to detect Chrome Inspect Element is running or not? [duplicate]如何检测 Chrome Inspect Element 是否正在运行? [复制]
【发布时间】:2011-11-23 13:19:22
【问题描述】:

有什么方法可以检测 Chrome Inspect Element 窗口是否正在运行?

例如,如果用户在 Chrome 中单击“检查元素”,则窗口会显示 Hello World 警报。

这可能吗?

【问题讨论】:

  • hmmm,您可以轻松地监视“右键单击”,尽管我怀疑您是否能看到他们选择的选项。因此,您可以更改右键单击操作的行为,然后显示您的框?
  • yes Abe 我知道我可以更改右键单击。但我真的想监控检查元素是否正在运行并做任何事情。例如运行一个 javascript 函数。
  • 请参阅Find out whether Chrome console is open 以获得有效的解决方案。

标签: javascript google-chrome console


【解决方案1】:
window.onresize = function(){
 if((window.outerHeight-window.innerHeight)>100)
   alert('hello');
}

实际操作中:http://jsbin.com/ediquk/

请注意,resize 事件似乎被触发了两次,因此您应该检查您是否已经提醒了用户。

【讨论】:

  • 也可以在 Firefox 中使用,但是您需要将警报设置为超时,否则布局会冻结。见jsbin.com/ediquk/3
  • 只有在窗口停靠时才有效,对吗?
  • 是的。仅在停靠时。我不明白如何检测未停靠的检查器。
  • 但这也会在调整窗口大小时触发......这比打开检查器更频繁。
  • 我怀疑这也会由具有多个工具栏或其他修改浏览器 UI 的扩展的人触发。例如,Chrome 书签工具栏会计入此计算。
【解决方案2】:

更新这不再有效。属性 console.profiles 已在 Chrome 29 中删除。

剩下的唯一解决方案是按照@Gerben 的建议检查window.outerHeight 和window.innerHeight 之间的区别。有一个库devtools-detect基于此方法,将devtoolschange添加到window对象。

或者,正在努力使用更强大的检测方法创建 Chrome 扩展程序,请参阅Google Group。


这是他们在Discover DevTools 交互式课程的第一个挑战中检查 DevTools 是否打开的方式:

function () {
    console.profile(); 
    console.profileEnd(); 
    if(console.clear) { console.clear() };
    return console.profiles.length > 0;
}

【讨论】:

  • 哈!不客气。 ;)
  • 适用于 firefox for firebug。
  • 这个人根据这里建议的解决方案创建了一个微测试框架和一个demo page。另外,你太棒了,保罗 :)
  • 您可以通过使用折叠控制台组来隐藏运行分析器生成的消息,从而使这种技术稍微不那么突兀。见github.com/adamschwartz/chrome-inspector-detector
  • 这将很快在 Chrome 中停止工作:codereview.chromium.org/15816002(对不起,你们大家)
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多