我已經看到了類似這樣的其他問題,但它有點不清楚正確的做法是什麼。我的假設是將光標移動到ContentEditable的前面,您只需將焦點放在元素上。將光標移到後面需要某種polyfil解決方案。如何將光標移動到ContentEditable Span的開始/結尾
小提琴:http://jsfiddle.net/ys04jkth/
在我的小提琴預期功能是將整個文本框光標包含「令牌」(格)在它的中間。當焦點集中在令牌上時,用戶可以將其刪除,或者使用箭頭鍵繼續向左或向右移動。關於如何移動到ContentEditable結尾的其他問題的常見解決方案是以下功能,當用戶將注意力集中在令牌上時單擊左箭頭鍵可以使用下面的功能:
function placeCaretAtEnd(el) {
el.focus();
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();
}
}
當用戶將注意力集中在令牌上並且他們按下了右箭頭鍵時,我試着將焦點放在下一個跨度上,假定它將光標聚焦在前面。我看到奇怪的行爲,在這兩種情況下,第一個字母被跳過。深入瞭解爲什麼會發生這種情況?
謝謝。
謝謝!我甚至不認爲默認行爲會繼續如此。 – thomasdclark