1
對於一個可滿足的div,爲了解決一些FireFox特定的問題。我不得不在div的末尾添加一個br標籤。將插入/光標位置設置爲一個可滿足的div的末尾
<div id="testDiv" contentEditable="true">
Hey, click the button then hit space.<br>
</div>
這實際上是谷歌plus如何處理他們的contentEditable div邏輯與他們的用戶標記。
現在的問題是,在Firefox中將光標移動到div的末尾意味着插入符號在
標記和命中空間移動到下一行之後。
您可以在此處測試該行爲:jsFiddle,方法是單擊按空格鍵的按鈕。
我用下面的代碼插入符號移動到範圍的最後一個位置:
function placeCaretAtEnd(el) {
el.focus();
if (window.getSelection){
if (typeof window.getSelection != "undefined"
&& typeof document.createRange != "undefined") {
var range = document.createRange();
range.selectNodeContents(el);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (typeof document.body.createTextRange != "undefined") {
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
textRange.collapse(false);
textRange.select();
}
}
}
有沒有可能改變這種代碼忽略了BR標籤或代替移動光標位置立即在br標籤之前?
那麼問題是什麼?如果我在沒有'
'標籤的Firefox和Chrome中運行該小提琴,則可以獲得相同的功能,但是我在使用br標籤時注意到了不同之處。 –
我可以更新小提琴,但在處理可編輯元素中的不可編輯html元素時,
標記非常必要。例如,如果我在可編輯的項目中有一個輸入,它不會使用退格一致地刪除,並且我將無法在元素之後的末尾集中注意力。 – mstef