是否可以检测到IE8调试器已连接

时间:2010-12-22 15:39:18

标签: javascript ie-developer-tools

我的应用程序中有一些代码在try / catch块中包装了function.apply和function.call。使用arguments.caller捕获错误和构建伪堆栈很方便,但它会对IE的调试器造成严重破坏。

我可以使用url参数关闭换行,但是如果连接了调试器,我想自动将其关闭。我找不到检测调试器的方法。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

对IE8不确定,但您可以通过检查来检测调试器是否在IE9 / IE10 / IE11中运行:

var isIeDebugging = !!window.__IE_DEVTOOLBAR_CONSOLE_COMMAND_LINE || ('__BROWSERTOOLS_DOMEXPLORER_ADDED' in window);

e.g。见http://jsbin.com/IJOwuje/5

但是,在IE9 / IE10中,对于仅运行一次调试器的窗口,即使调试器现已关闭,也会设置为true。

同样在IE11中,各种窗口.__ BROWSERTOOLS *键似乎只显示取决于打开或使用的调试器选项卡,因此检查调试框架是否打开时不是100%可靠...

答案 1 :(得分:0)

这不是您想要的答案,但我过去通过使用一小部分加载器JS来处理这个问题,首先检查URL中的哈希值(如果有的话),以获取密码,例如:

mysite.com/#mXVa

所以加载器检查并且如果location.hash =='mXVa',我的加载器加载页面上所有脚本的调试版本(没有try / catch等),而不是缩小的,吃错误的变种。< / p>