IE craches我的JS脚本在第一,然后我按下F12,它的作品beaultifully(I.E.

2019-09-19 03:46发布

我有一个JS脚本,在所有的浏览器工作正常。 但对于大家吃惊的是,在IE中它不会在第一次尝试工作。

如果经过我打开我的网页,我按下F12(打开IE调试器),并刷新我的网页,它工作正常! 就像其他的浏览器! 但对于这项工作,我必须按F12。

请问IE的调试器做一些事情,当我们打开它? 我不能找到一个解决办法!

提前致谢。

Answer 1:

当你没有调试器中打开,IE认为那里是没有这样的东西的console.log,并为您的错误调用一个未定义的功能。 当你点击F12,那么你得到的控制台等的console.log不再是不确定的。

你可以把这个在你的代码的顶部解决方法:

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

而不是从你的代码编辑出来的console.log,这只会使浏览器做什么,如果控制台不存在,通过将它们定义为“什么也不做”的功能,如果他们是不确定的。

如果你正在寻找缩小了你的js文件的大小(移动应用尤为重要),你最终还是会希望你的发行版中删除详细记录。



Answer 2:

你有类似console.log()在你的脚本? 这也许可以解释,因为直到你按下F12没有控制台



Answer 3:

从以前的帖子加长版

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


Answer 4:

你们应该看看这个问题,并为深入解释公认的答案: 是否支持IE9的console.log,而且是一个真正的功能?



文章来源: I.E. craches my JS script at first, then i press F12 and it works beaultifully