我有一个带有 iframe 的页面。
iframe 驻留在同一域中,因此不存在 x 域问题。
我需要 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 上失败?
我想类型不匹配来自于 content 变量不是节点类型?
有人知道我做错了什么吗?
最佳答案
如果您在使用 getElementsByName
时遇到问题,请尝试使用 querySelectorAll
。它适用于 IE8。
var content = document.querySelectorAll('[name="content"]')[0];
CSS 选择器非常强大,IE8 支持足够多的选择器,非常有用。
属性选择器在 IE8 中工作的唯一要求是使用 HTML5 文档类型,
<!DOCTYPE html>
在旧版浏览器上,它作为严格的 HTML4 相互渗透。
关于javascript - IE8 上出现类型不匹配错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755791/