我在這個問題在IE瀏覽器的智慧結尾。我有一個contenteditable屬性設置爲「true」的元素。裏面有各種元素,其中一些不能被改變,文本用CSS類名稱「uneditable」包裹在跨度中。Rangy - Range.setStartAfter在IE中
使用「keydown」事件的處理程序檢查選擇的anchorNode。如果anchorNode是不可編輯元素的文本節點,則範圍將被更改並設置爲在不可編輯元素節點之後開始。這適用於所有瀏覽器,除了名爲IE的可憎的 。
看看下面的例子:
Lorem ipsum dolor sit <span class="uneditable">amet</span>,
consectetur adipisicing elit
如果光標處於不可編輯元素的末尾,按下任意字符鍵 應該添加到下一textnode的開始。但在IE中, 的文本被添加到不可編輯元素的末尾。
這裏是處理:
$("#myeditor").keydown(function(ev)
{
var sel = rangy.getSelection();
var range = sel.getRangeAt(0);
if (sel.anchorNode.nodeType == 3)
{
if ($(sel.anchorNode.parentNode).is(".uneditable"))
{
range.setStartAfter(sel.anchorNode.parentNode);
rangy.getSelection().setSingleRange(range);
}
}
});
即使我選擇了下一個兄弟和使用range.setStart(nextSibling,0),IE仍然增加了不可編輯元素中的新文本。如何防止IE編輯我的無法編輯的元素?
任何幫助將不勝感激。
你能不能設置'CONTENTEDITABLE =「假」'上不可編輯的要素是什麼?我想我以前留下了一個答案,但可能不會。 –
看來,IE會忽略嵌套元素的contenteditable屬性。 – Raybiez