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

回答

0

似乎是故意的;它試圖編輯您放入的<p>標記,並在其後基本生成HTML。