Internet explorer 8 IE8从IE10降级,带控制台

Internet explorer 8 IE8从IE10降级,带控制台,internet-explorer-8,downgrade,Internet Explorer 8,Downgrade,我需要测试一个使用控制台对象的JavaScript项目。所以我从IE10降级到IE8,但我不确定我的环境测试用例对其他人来说是否“安全” 这说明控制台没有Developertools(F12)时是未定义的。但我目前的经验是,console.log始终可用,无论F12是否处于活动状态 这意味着,它们已完全启用。此sais控制台在IE8中未定义 看起来像IE8!=IE8。在IE、Firefox、Opera和Safari中测试页面不是很难吗 <html> <body> <

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

这说明
控制台
没有Developertools(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>

document.write('Console是'+typeof Console+'!
'); document.write('Even console.log是'+typeof console.log+'!
'); document.write(window.navigator.userAgent);

控制台未定义:这是真的。IE8和IE9仅在F12开发工具打开时定义控制台对象。如果开发工具尚未打开,
控制台
对象未定义,将抛出致命错误

另见我对这个问题的回答:

有多种方法可以解决这个问题,但最好的解决方案就是不要在生产代码中使用
console
对象--
console
对象不是web标准,因此您不应该依赖现有的
console
对象(事实上,现有的其他浏览器根本不提供
console
对象)

如果必须在生产代码中使用控制台,则可以在加载页面时为其创建垫片。大概是这样的:

if(!window.console) {window.console={log:function(){}};}
这将防止它抛出致命错误


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

+1我实际上关闭了devtools,但还是定义了控制台。我看到的唯一解决方案是“不要在生产环境中使用控制台”
undefined
这一点只在开发工具完全打开之前有效;一旦开发工具被打开并定义了
控制台
,即使在开发工具关闭后,它仍将保持定义状态。但无论如何,是的,我会坚持“不要在生产中使用它”的信息,因为它不安全;正如我所说,在现实世界中,有一些浏览器根本没有控制台,甚至在那些有控制台的浏览器中,控制台的功能因浏览器而异(甚至不同版本);正如我所说,它不是一个定义的标准,所以浏览器开发人员基本上是免费的,让它信任我,我加载页面时没有开发工具,控制台是定义的。我通过f12启动devtools,定义了控制台,我在devtools打开时重新加载页面,定义了控制台,我关闭devtools,定义了控制台,我重新加载网页,但没有定义devtools控制台。即使是圆形边框似乎也能工作,而ie8不应该支持它。