【问题标题】:Why does the following throw an "Object doesn't support property or method 'importNode'" in IE11?为什么下面会在 IE11 中抛出“对象不支持属性或方法‘importNode’”?
【发布时间】: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


【解决方案1】:

您是从硬盘驱动器本地加载页面吗?如果是这样,它很可能显示在 Intranet 区域中,因此默认为 IE7 兼容模式。你可以:

  1. add an MOTW 从 Internet 区域加载您的页面,
  2. 从本地网络服务器提供服务,
  3. disable the settings 自动将 Intranet 区域页面设置为兼容性视图(也称为 IE7 模式)。

而且,是的,您必须处于 IE9 标准模式或更高版本才能使用importNode

希望这会有所帮助...

-- 兰斯

附:根据 OP,隐蔽回答。

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    相关资源
    最近更新 更多