0

以下 JavaScript 函数旨在打开一个新的 HTML 页面并将 div 的内容复制到其中(当然,实际任务比复制更复杂):

function copydiv(srcid) {
    var w = window.open('about:blank', '_blank');
    var otherdoc = w.document;
    otherdoc.write('<html><body>');
    otherdoc.write('</body></html>');
    otherdoc.close();
    var srcdiv = document.getElementById(srcid);
    var otherbody = otherdoc.getElementsByTagName('body')[0];
    // (A) var dstdiv = otherdoc.createElement('div');
    // (A) otherbody.appendChild(dstdiv);
    // (A) dstdiv.innerHTML = srcdiv.innerHTML;
    // (B) otherbody.appendChild(srcdiv.cloneNode(true));
    // (C) otherbody.appendChild(otherdoc.importNode(srcdiv, true));
}

标有 (A) / (B) / (C) 的代码部分是替代品;这三个都在 Firefox 中工作。但是,只有 (A) 可以在 Internet Explorer (11.49) 中使用。其他人抛出以下异常:

  • (B) HierarchyRequestError
  • (C) 不支持接口

尽管问题JavaScript:cloneNode 与 importNode表明“浏览器不强制执行”两者之间的区别cloneNodeimportNode但我会理解后者的需要,因为源节点和目标节点属于不同的文档(Firefox 不关心)。但是,既然 Internet Explorer在这种情况下importNode不允许,为什么不支持呢?cloneNode复制innerHTML似乎是克隆节点的一种尴尬方式。importNodeInternet Explorer是否有更好的替代方案?(理想情况下,它将独立于浏览器。)

4

0 回答 0