IE10 console.log 不工作

Posted

技术标签:

【中文标题】IE10 console.log 不工作【英文标题】:IE10 console.log not working 【发布时间】:2013-01-19 15:57:40 【问题描述】:

我刚开始在 Win8 上玩 IE10 并遇到了问题。当文档模式设置为标准时,开发人员工具控制台似乎不起作用。我玩过浏览器模式和文档模式,当设置为 IE9 标准时,控制台可以工作,但将其设置为简单的“标准”,即 IE10 的默认值,控制台未定义。有什么想法吗?

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

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

【问题讨论】:

您必须在页面加载时打开开发者工具。见here 开发者工具在页面加载时打开。 是的。如果我将文档模式切换到 IE9 标准,控制台不是未定义的。切换回标准,控制台未定义 @Spudley 这将是标准的 IE 行为... 我遇到了同样的问题。 IE10 标准=不工作。 IE9 标准模式下的 IE10=工作 【参考方案1】:

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 中定义控制台的唯一方法 - 通过禁用标准模式。

【讨论】:

微软解释说 IE=edge “在功能上等同于使用 HTML5 doctype”,所以 就足够了。见msdn.microsoft.com/en-US/library/jj676915.aspx 在哪个星球上“有意义”?有意义的是,微软生产了一个从不符合实际“标准”的可怕浏览器 这很有意义,因为 IE 8 处理错误的方式。它只是简单地使其余的 javascript 崩溃。将console.log() 放在 jQuery 文件的开头会导致 jQuery 无法加载到页面上。让 IE 10 在标准模式下正常退出错误会导致它的功能与 IE 8 不同。此外,对于 tanguy_k,&lt;!DOCTYPE html&gt; 会导致 IE 9 及以下版本默认为loose.dtd(可能是transitional.dtd,我忘了哪个) 并可能导致页面的 CSS 中断。 另外,请确保您没有提取缓存的内容。清除缓存,然后打开缓存菜单下的开发工具设置“始终从服务器刷新”。这是我让它为我工作的唯一方法。【参考方案2】:

定义它!

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

见:'console' is undefined error for Internet Explorer

【讨论】:

听起来 OP 知道这种解决方法,但很好奇为什么 console.log 在某些模式下无法正常工作。 这已经完成了。注意“调试显示控制台未定义,因此将 console.log 设置为空函数以处理未定义。”

以上是关于IE10 console.log 不工作的主要内容,如果未能解决你的问题,请参考以下文章

javascript常用知识点总结

IE8 中的 console.log 发生了啥?

ie8不支持console.log()的解决方法

Console.log IE9 问题

let和var

IE 不兼容 console 关键字