I.E.首先崩溃我的JS脚本,然后按F12,它工作得很漂亮

时间:2012-07-05 14:10:10

标签: javascript internet-explorer debugging crash

我有一个JS脚本,可以在所有浏览器中正常运行。 但是对于每个人都很惊讶,在I.E.它在第一次尝试时不起作用。

如果在我加载页面后,按F12(打开ie调试器)并刷新页面, 它工作正常!就像其他浏览器一样!但是对于这项工作,我必须按F12。

当我们打开它时,ie的调试器会做什么吗? 我找不到解决办法!

提前致谢。

4 个答案:

答案 0 :(得分:12)

当你没有打开调试器时,IE认为没有console.log这样的东西,并且给你调用未定义函数的错误。当你点击F12,然后你得到控制台,所以console.log不再是未定义的。

您可以将其置于代码顶部来解决方法:

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

不是从你的代码中编辑出console.log,而只是如果控制台不存在,它只会使浏览器不执行任何操作,如果它们未定义则将它们定义为“不执行任何操作”。

如果您希望缩小js文件大小(对于移动设备使用尤其重要),您最终会希望删除发布版本上的详细日志记录。

答案 1 :(得分:2)

您的脚本中是否有类似console.log()的内容?这可能会解释,因为在按F12之前没有控制台

答案 2 :(得分:2)

上一篇文章的扩展版

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

我发布了这个新的,只在需要时安装存根

/**
 * 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;
    }
})();

答案 3 :(得分:0)

你们应该查看这个问题以及接受的答案,以获得深入的解释:Does IE9 support console.log, and is it a real function?