我需要测试一个使用console-object的JavaScript项目。所以我从IE10降级到IE8,但我不确定我的环境测试用户对其他人是否“安全”。
这How can I use console logging in Internet Explorer?个console
是undefined
没有开发工具(F12)。但我目前的经验是console.log
始终可用,无论F12是否有效。
这个article sais,它们已完全启用。 IE8中未定义此article sais控制台。
看起来像IE8!= IE8。不是在IE,Firefox,Opera和Safari中测试页面吗?
<html>
<body>
<script>
document.write('Console is <b>' + typeof console + '</b>! <br />');
document.write('Even console.log is <b>' + typeof console.log + '</b>!<br />');
document.write(window.navigator.userAgent);
</script>
</body>
</html>
答案 0 :(得分:1)
未定义的控制台:这是真的。 IE8和IE9仅在打开F12开发工具时定义console
对象。如果尚未打开开发工具,则console
对象未定义,将导致致命错误。
另请参阅我对此问题的回答:Why does JavaScript only work after opening developer tools in IE once?
有很多方法可以解决这个问题,但最好的解决办法就是不在生产代码中使用console
对象 - console
对象不是Web标准,所以你不应该依赖它存在(实际上存在其他浏览器根本不提供console
对象。)
如果您必须在生产代码中使用控制台,则可以在页面加载时为其创建垫片。像这样:
if(!window.console) {window.console={log:function(){}};}
这应该可以防止它造成致命的错误。
但实际上,最好的答案是不要在生产代码中进行console
次调用。它旨在作为开发人员工具,因此它应该只用于开发代码。