【发布时间】:2015-04-26 14:11:00
【问题描述】:
为什么下面会在 IE11 中抛出 "Object doesn't support property or method 'importNode'"?
这可能是我的“文档模式”吗?我在“文档模式” 7.
<!DOCTYPE html>
<html>
<head>
<script>
function go() {
var popUp = window.open('about:blank');
var node = document.createElement('div');
node.textContent = 'foo';
var importedNode = popUp.document.importNode(node, true);
popUp.document.body.appendChild(importedNode);
}
</script>
</head>
<body>
<button onclick="go()">Click Me</button>
</body>
</html>
为了澄清,我希望节点 node 由开启器窗口创建,我使用 importNode 以尝试在 IE 中运行(Chrome 不需要它)。
importNode 我认为是在 IE9 中添加的 (https://msdn.microsoft.com/en-us/library/ie/gg130964%28v=vs.85%29.aspx)。
【问题讨论】:
-
about:blank没有DTD,因此popUp属于怪癖模式?而且您绝对应该在 IE9 模式下使用 IE9 中引入的功能... -
我认为 IE 不支持
importNode,即使它存在。我在 IE 11 中得到No such interface supported,还有 stackoverflow.com/questions/1811116/… -
@Teemu 文档模式是否与浏览器版本号对应?如果是这样,考虑到上述代码/标记,为什么 IE 会进入模式 7。
-
几乎是的,除了最后一个版本也可以用“edge”引用。只需省略任何
x-ua元标记并使用适当的html5 DTD,这将是让IE9 像现代浏览器一样工作的最佳选择。如果自动激活兼容模式,请check this answer. -
但是上面的文档类型是有效的吧?另外,我可以将 doctype 成功注入 about:blank 以避免目标中的怪癖模式吗?
标签: javascript internet-explorer