admin管理员组

文章数量:1244247

I have a JS script that works fine in all browsers. But for everybody's surprise, in I.E. it does not work at the first try.

If, after I load my page, I press F12 (open the i.e. debugger) and refresh my page, it works fine! Just like the others browsers! But for this work, i have to press F12.

Does i.e.'s debugger do something when we open it? I cant find a solution!

Thanks in advance.

I have a JS script that works fine in all browsers. But for everybody's surprise, in I.E. it does not work at the first try.

If, after I load my page, I press F12 (open the i.e. debugger) and refresh my page, it works fine! Just like the others browsers! But for this work, i have to press F12.

Does i.e.'s debugger do something when we open it? I cant find a solution!

Thanks in advance.

Share Improve this question asked Jul 5, 2012 at 14:10 Fernando FerrariFernando Ferrari 5866 silver badges21 bronze badges 1
  • 1 possible duplicate of 'console' is undefined error for internet explorer, Does IE9 support console.log, and is it a real function? – kapa Commented Jul 5, 2012 at 14:15
Add a ment  | 

3 Answers 3

Reset to default 12

When you don't have the debugger open, IE considers there to be no such thing as console.log, and gives you errors for calling an undefined function. When you hit F12, then you get the console, and so console.log is no longer undefined.

You can workaround by putting this at the top of your code:

if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };

Rather than editing out console.log from your code, this will merely make the browser do nothing if the console doesn't exist, by defining them as a 'do nothing' function if they are undefined.

If you're looking to shrink down your js file size (particularly important for mobile usage), you will eventually want to remove verbose logging on your release version.

Do you have something like console.log() in your script? This might explain, since there is no console until you press F12

Extended version from previous post

if (!('console' in window)) {
    var stub = function() { ; };
    window.console = {
        log : stub,
        info : stub,
        warn : stub,
        error : stub,
        assert : stub
    };
}

I'm posting this new one that install stub only if needed

/**
 * On IE console is not set if not opened and debug doesn't exists
 */
(function() {
    if (!('console' in window)) { window.console = {}; }
    var kind = ['log', 'info', 'warn', 'error', 'assert', 'debug'];
    var stub = function() { ; };
    for (var i = 0; i < kind.length; i++) {
        if (kind[i] in window.console) { continue; }
        window.console[kind[i]] = stub;
    }
})();

本文标签: