【问题标题】:Internet Explorer throws SCRIPT5022: HierarchyRequestError when trying to appendChild an HTML object from another windowInternet Explorer 抛出 SCRIPT5022: HierarchyRequestError 时尝试从另一个窗口 appendChild 一个 HTML 对象
【发布时间】:2014-04-16 00:45:38
【问题描述】:

我有一个来自一个窗口的 html 表格。我通过使用

var table = document.getElementById('tableId');

然后我使用以下命令打开另一个窗口:

window.open('newWindow.html'); 

在这个窗口中,有一个 id = divId 的 div。

现在,如果我尝试通过以下代码从另一个窗口附加表格:

var cloneTable = jQuery.extend(true, {}, window.opener.table);

var div = document.getElementById('divId');

div.appendChild(cloneTable);

Internet Explorer 会抛出这个错误:

SCRIPT5022: HierarchyRequestError

我已经搜索到错误代码,在这里列出:

http://msdn.microsoft.com/en-us/library/ie/gg592979(v=vs.85).aspx

它说我不能在那个位置插入节点。但是,上面的代码在 Firefox 和 Chrome 中运行良好。

这里发生了什么,我该如何解决?

谢谢,

P.S:我使用的是 IE 10

【问题讨论】:

  • 我猜这是一个安全问题。

标签: javascript jquery html internet-explorer


【解决方案1】:

IE 可能无法跨不同文档移动元素。如果浏览器无法克隆表,您可以做的是使用 outerHTML 属性。

例如

var tbl = window.opener.table;
try {
    document.getElementById('my_div').appendChild(tbl.cloneNode(true)); 
}
catch (e){
    if (tbl.outerHTML) {
        document.getElementById('my_div').innerHTML = tbl.outerHTML;
    }
    else {
            console.log('not working');
    }
}

【讨论】:

    【解决方案2】:

    上述方案的问题是IE版本不支持innerHTML和outerHTML

    【讨论】:

      【解决方案3】:

      这个问题不再有效。 Internet Explorer 已被 Microsoft 淘汰。感谢大家的帮助。

      【讨论】:

        猜你喜欢
        • 2014-05-29
        • 2017-04-08
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 2019-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多