1
我有一个contentEditable div元素。在可编辑区域在第一次按键创建一个容器< p使用以下逻辑>标签:防止Firefox向contentEditable div添加文本节点(Firefox bug?)
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标签有两个文本节点作为兄弟姐妹。 Google Chrome和Opera不会这样做。这个额外的文本节点会对我的撤消/重做系统造成问题。该撤销系统将插入符号位置保存为节点偏移量数组。 contentEditable div的内容使用innerHTML进行保存和恢复。但是,通过此方法恢复内容时,只会创建一个文本节点,其中Firefox以前有2个文本节点,导致出错。我想知道是否这种行为(创建额外的文本节点)是故意在Firefox中,或者如果它可能是一个错误。任何建议或建议非常感谢。