【问题标题】:IE10 console.log not workingIE10 console.log 不工作
【发布时间】: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=工作

标签: javascript internet-explorer


【解决方案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 设置为空函数以处理未定义。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2014-01-05
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2019-11-09
相关资源
最近更新 更多