【问题标题】:Why does forEach() not work in an iframe in IE11? [closed]为什么 forEach() 在 IE11 的 iframe 中不起作用? [关闭]
【发布时间】:2015-01-19 20:27:49
【问题描述】:

此问题已因离题而关闭,因此我已标记缺少信息。

具体问题或错误加上所需的最短代码:

如果在某些网站的 iframe 中,下面的代码在 IE11 中不起作用。 (“Certain”并不具体,但我没有公开演示。我无法制作一个,直到我在我的私人代码中找到原因。不过,这个问题足够具体,可以由专家来回答,那就是为什么我问 SO 而不是一个没有任何想法的漫长的调试过程。)

['a', 'b'].forEach(function(elem){console.log(elem);});

error 表示该数组不支持 forEach 方法。

期望的行为:

forEach() 方法对每个数组执行一次提供的函数 元素。 - MDN

【问题讨论】:

  • 您将不得不发布所涉及的代码,以便任何人都能提供帮助。
  • 我只能猜测,因为您没有提供复制品。我的猜测是框架发出了这个命令。 delete [].constructor.prototype.forEach。这将从所有数组中删除 forEach 方法。
  • 您检查document mode 是否至少为9? IE8及更早版本不支持forEach阅读this
  • @Pointy,代码已添加。
  • 是的,iframe 受父级设置的影响(即使我在元标记中明确设置边缘模式)。 “如果顶级页面不在边缘模式下,IE11 使用 Quirks 模式仿真。” - msdn.microsoft.com/en-us/library/ff955402(v=vs.85).aspx

标签: javascript html iframe foreach internet-explorer-11


【解决方案1】:

IE11 使用 Quirks 模式模拟,如果顶级页面不在边缘模式下。” - MSDN

在这种模式下,数组不支持 forEach 方法。

改用一个简单的for loop,或者在父级的标题标签之后写下这个:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

【讨论】:

猜你喜欢
  • 2014-09-24
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 2018-02-15
相关资源
最近更新 更多