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中,或者如果它可能是一個錯誤。任何建議或建議非常感謝。