2013-02-04 104 views
19

我刚开始在Win8上玩IE10时遇到了问题。当文档模式设置为标准时,开发人员工具控制台似乎不起作用。我玩过浏览器模式和文档模式,控制台在设置为IE9标准时工作,但将其设置为“标准”(IE10的默认设置),控制台未定义。有任何想法吗?IE10 console.log不工作

这不是重复的。测试时,开发人员控制台已打开。按预期将Doc模式切换到IE9标准并重新加载显示控制台输出。切换回IE10标准将不显示控制台输出。调试显示控制台是未定义的,因此将console.log设置为空函数来处理未定义的。我很好奇为什么控制台在IE10标准模式下未定义。

我在VirtualBox中运行Win8。我的页面是带适当文档类型的HTML4标记。

+9

您必须在页面加载时打开*开发工具。请参阅[这里](http://stackoverflow.com/questions/10415519/does-ie9-enable-something-when-using-developer-tools/10415712#10415712) – jbabey

+0

开发人员工具在页面加载时打开。 – James

+0

所以你打开页面,按F12打开开发工具,然后按F5重新加载页面,'console'仍然显示为'undefined'? – jbabey

回答

5

定义它!

if (typeof console == "undefined") { 
    this.console = {log: function() {}}; 
} 

见:'console' is undefined error for Internet Explorer

+0

听起来好像OP知道这个解决方法,但很奇怪为什么'console.log'在某些模式下无法正常工作。 – jahroy

+0

这已经完成。注意“调试显示控制台未定义,因此将console.log设置为空函数来处理未定义的。” – James

7

为什么console.log();未定义的原因是因为这是标准模式是如何工作的。 IE 8具有兼容模式,可以将其转换为IE 7,从而消除对IE 8中添加的功能的所有理解。控制台已添加到IE 10中,因此通过在标准模式下运行该控制台,可以发现错误。

<head> 
    <title>Force IE 10</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
</head> 

此元标记在这里将强制IE在您安装的最新版本(禁用标准和兼容模式)下运行。这是在标准模式下在IE 10中定义控制台的唯一方法 - 禁用标准模式。

+2

微软解释说IE =边缘“在功能上等同于使用HTML5文档类型”,因此<!DOCTYPE html>就足够了。请参阅http://msdn.microsoft.com/en-US/library/jj676915.aspx –

+5

什么星球“有道理”?有意义的是,微软生成一个可怕的浏览器,从来不符合实际的“标准” –

+3

它是有道理的,因为IE 8如何处理错误。它只是简单地崩溃了其余的JavaScript。将一个'console.log()'放在jQuery文件的开头会导致jQuery无法加载页面。 IE 10在标准模式下正常退出错误会导致其功能与IE 8不同。 此外,对于tanguy_k,'<!DOCTYPE html>'会导致IE 9及以下版本默认放入到'loose.dtd'中是'transitional.dtd',我忘了它是什么),并可能导致页面的CSS中断。 – Andrew