Question

I have some code in my application that wraps function.apply and function.call in try/catch blocks. It's handy for catching errors and building up a pseudo-stack using arguments.caller but it plays havoc with IE's debugger.

I can turn off the wrapping with a url parameter but I'd like to turn it off automatically if the debugger is attached. I can't find a way to detect the debugger. Any ideas?

Was it helpful?

Solution

This isn't the answer you wanted, but I've handled this in the past by having a small bit of loader JS that begins by checking the hash, if any, in the URL, for a secret code, like:

mysite.com/#mXVa

So the loader checks and if location.hash == 'mXVa', my loader loads the debug versions of all the scripts on the page (no try/catch, etc) rather than the minified, error-eating variety.

OTHER TIPS

Not sure for IE8, but you can detect if the debugger is running in IE9/IE10/IE11 by checking:

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

e.g. see http://jsbin.com/IJOwuje/5

However, in IE9/IE10 this is set to true for a window that has run the debugger just once, even if the debugger now closed.

Also in IE11 the various window.__BROWSERTOOLS* keys seem to only appear depending upon which debugger tab is open or used, so not 100% reliable for checking if the debugging frame is open...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top