Javascript 内容编辑<;代码>;无缘无故产生的
我正在开发一个块删除程序(按backspace删除块) 在我的代码中,有一个包含Javascript 内容编辑<;代码>;无缘无故产生的,javascript,contenteditable,Javascript,Contenteditable,我正在开发一个块删除程序(按backspace删除块) 在我的代码中,有一个包含的块。当我想要移除标记时,我会拾取里面的所有内容,并将其放置在DOM之外的节点中 var replacementTag = document.createElement('p'); while(block.firstChild){ replacement.appendChild(codeTag.firstChild); } cod
的块。当我想要移除标记时,我会拾取里面的所有内容,并将其放置在DOM之外的节点中
var replacementTag = document.createElement('p');
while(block.firstChild){
replacement.appendChild(codeTag.firstChild);
}
codeParent.parentNode.replaceChild(replacementTag, codeParent);
这样做之后。一切似乎都很好。如果我使用DOM检查器,则会有标记,其中包含标记的容器(codeOwner,内有标记)。
但是
如果我键入任何内容,则我刚刚创建的
标记中的
标记将恢复生命(浏览器将重新生成它)。我不想那样。我不希望
标记返回,除非我告诉浏览器我想返回
我怎样才能做到这一点
我在Chrome上看到过这一点,虽然我不完全确定如何复制它,但在firefox中复制它似乎很容易
使用firefox v.39进行测试是最简单的
要测试:
跟随链接
等待一些启动执行运行(大约1.5秒)
按backspace 2x(第一个删除TextNode,第二个命令js删除周围的html)
打字
您刚才键入的内容现在已被
标记包围,而只应生成包含刚输入信息的TextNode或Outline。您正在将块的第一个子节点添加到另一个节点。是否不必先将其与父块分离?@LittleSanti如果将节点插入DOM树,则其他节点DOM中该节点的r实例不再存在(也就是说)。在任何时候,DOM中只能有1或0个DOM节点的表示0。如果将同一个节点添加到DOM中两次,则只有第二次添加会反映到某些内容中。明白我的意思吗?是的,我知道。我只是在想,尽管一个节点只能有一个父节点,但有可能多个节点将同一个节点作为子节点最近(由于DOM实现中的一些错误)。在更改其父节点之前,我会首先尝试将其删除。@LittleSanti是否这样?是的,这是我的建议。您正在将块的第一个子节点添加到另一个节点。是否不必首先将它们从其父块中分离?@LittleSanti如果将一个节点插入到DOM树中,则该节点在DOM中的另一个实例将不再存在(可以这么说)。在任何时候,DOM中只能有1或0个DOM节点的表示0。如果将同一个节点添加到DOM中两次,则只有第二次添加会反映到某些内容中。明白我的意思吗?是的,我知道。我只是在想,尽管一个节点只能有一个父节点,但有可能多个节点将同一个节点作为子节点neously(由于DOM实现中的一些错误)。在更改其父级之前,我会首先尝试删除它。@LittleSanti喜欢这样吗?是的,这是我的建议。