-1

我需要测试一个使用控制台对象的 JavaScript 项目。所以我从 IE10 降级到 IE8,但我不确定我的环境测试用例对其他人来说是否“安全”。

如何在 Internet Explorer 中使用控制台日志记录?consoleundefined没有开发者工具(F12)。但我目前的经验是,console.log无论 F12 是否处于活动状态,它始终可用。

这篇文章说,它们是完全启用的。本文sais 控制台在 IE8 中未定义

它看起来像 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>

截屏

4

1 回答 1

1

重新控制台未定义:这是真的。IE8 和 IE9 仅console在打开 F12 开发工具时定义对象。如果尚未打开开发工具,则console对象未定义并会引发致命错误。

另请参阅我对这个问题的回答:为什么 JavaScript 只有在 IE 中打开开发人员工具一次后才能工作?

有多种方法可以解决这个问题,但最好的解决方案就是不要console在生产代码中使用该对象——该console对象不是 Web 标准,所以你不应该依赖它存在(事实上还有其他浏览器不支持) '根本不提供console对象)。

如果您必须在生产代码中使用控制台,您可以在页面加载时为其创建一个 shim。像这样的东西:

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

这应该可以防止它抛出致命错误。

但实际上,最好的答案是不要console在您的生产代码中调用。它的目的是作为开发人员工具,所以它应该只在开发代码中真正使用。

于 2013-07-18T12:54:54.600 回答