控制台打开后,JavaScript在MSIE9中运行

时间:2013-06-12 21:46:27

标签: jquery internet-explorer console.log

这个问题是本次讨论的后续行动: Why does JavaScript only work after opening developer tools in IE once?

请看这个小提示,表明在MSIE9中console.log不再是问题: http://jsfiddle.net/xwsYY/11/

$('button.something').click(function () {
    $('div.container').html('<p>something</p>');
    console.log('microsoft strikes again!');
});

对不起,但是我无法向您展示我遇到此问题的实际代码,但它会在所有其他浏览器中检出,但只有在打开控制台并且页面已刷新后才会在MSIE9中运行。那很好。没有评论我对此的看法。

如果有其他人遇到过此问题,请帮帮我!

2 个答案:

答案 0 :(得分:1)

不幸的是,你错误地认为console“不再是IE9中的问题”。这是一个问题,它与您链接的问题完全一致。

是的,您引用的代码和jsFiddled将在IE9中运行 - 即使控制台窗口关闭 - 但这只是因为调用console是函数中的最后一件事。该函数运行完全正常,直到它到达console调用,然后它无声地失败。所以看起来就像它运行得很好。

如果你把console之前的电话放在的另一行代码之前,你就会发现它不起作用....除非你先打开控制台当然,这会让我们回到上一个问题的答案。

答案 1 :(得分:1)

我有类似的问题,最好的答案是,在F12工具打开之前,MSIE没有console对象。所以javascript抛出错误。打开开发人员工具后,console存在且console.log()不会抛出。

我使用此代码来保持开发期间的兼容性:

try {
    if (typeof console == "undefined") {
        this.console = {
            log: function () {}  //warn, error, ...
        };
    }
} catch (e) {
    this.console = {
        log: function () {}  //warn, error, ...
    };
}

但是,建议从生产代码中删除所有控制台引用。

编辑:将window更改为this以访问全球范围,因为它更符合MSIE。