在IE8上输入不匹配错误?

时间:2014-11-05 11:12:49

标签: javascript dom iframe

我有一个包含iframe的页面。

iframe位于同一个域中,因此没有x-domain问题。

我需要iframe将其部分内容复制到父级。

所以我有iframe的父页面,如此

...
<div id="some-content">
  <iframe src="frame-1.html" style="display:none;"></iframe>
</div>
...

这是frame-1.html

<!doctype html>
<html lang="en">
<head>
</head>

<body>
  <div name="content">
    <img src="http://placehold.it/300x250/ffffff/E8117F&text=from+frame+1" />
  </div>
  <script>
    (function() {
      var content = document.getElementsByName("content")[0];
      var iframeName = this.name;
      var iframeContainer = parent.document.getElementsByName(iframeName)[0].parentNode;0
      iframeContainer.appendChild(content);
    })();
  </script>
</body>
</html>

它在现代浏览器上运行良好但在IE8 / 9上失败了吗?

我认为类型不匹配来自内容变量不属于节点类型?

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果getElementsByName遇到问题,请改为querySelectorAll。它适用于IE8。

var content = document.querySelectorAll('[name="content"]')[0];

CSS选择器非常强大,IE8支持它们非常有用。

属性选择器在IE8中工作的唯一要求是使用HTML5 doctype

<!DOCTYPE html>

- 在较旧的浏览器上 - 作为严格的HTML4互相渗透。