繁体   English   中英

阻止Firefox将文本节点添加到contentEditable div(Firefox错误?)

[英]Prevent Firefox from adding text node to contentEditable div (Firefox bug?)

我有一个contentEditable div元素。 在可编辑区域的第一次按键上,我使用以下逻辑创建容器<p>标记:

var c = (32 == key ? '\u00A0' : String.fromCharCode(key));
var e = document.createElement('p');
var sel, rng;
e.appendChild(document.createTextNode(c));
this.editDocument.appendChild(e);
sel = window.getSelection();
rng = document.createRange();
rng.selectNodeContents(e);
rng.collapse(false);
sel.removeAllRanges();
sel.addRange(rng);

我遇到的问题是在下一个按键事件上,Firefox创建了另一个文本节点作为新字符以及所有后续字符的容器。 这意味着我的p标签有2个文本节点作为同级。 Google Chrome和Opera不会这样做。 这个额外的文本节点在我的撤消/重做系统上造成了问题。 此撤消系统将插入符号的位置保存为节点偏移量的数组。 contentEditable div的内容使用innerHTML保存和还原。 但是,通过这种方法还原内容时,仅会创建一个文本节点,而Firefox以前的文本节点为2,这会导致错误。 我想知道这种行为(创建额外的文本节点)是否在Firefox中是故意的,还是可能是一个错误。 任何建议或意见,不胜感激。

似乎是故意的; 它尝试编辑您放入的<p>标记,并且此后基本上生成HTML。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM