0

我注意到,当尝试调用 DOMNode 的 insertBefore 方法时,其中要插入的节点来自另一个文档(即不同于参考节点插入的节点),PHP 运行时会在消息所在的位置生成 DOMException “不允许修改错误”。

尽管我确实看到一些提到插入的节点是只读的,但关于这个问题的文档似乎很少。

我发现可行的解决方法是克隆来自不同文档的节点并插入克隆。例子:

foreach($nodeChildren as $child) {
    $clone = $child->cloneNode(true);
    $parentNode->insertBefore($clone, $nodeToInsertInFrontOf);
}

我的问题是双重的:

1)为什么我必须克隆这个节点才能执行插入?

2)这是执行此操作的最有效方式(假设克隆的子节点可能包含多个子节点和孙子节点的多个层次结构)?

4

1 回答 1

1

根据定义,DOM 中的对象只知道它自己的文档中的对象。这是一个安全的事情。

于 2011-01-28T22:28:00.107 回答