这个问题是本次讨论的后续行动: 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中运行。那很好。没有评论我对此的看法。
如果有其他人遇到过此问题,请帮帮我!
答案 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。