1

我想利用可以从 window.getSelection() 检索的选择对象。所以我最初的尝试是检查从 getRangeAt() 返回的范围是否可以使用 addRange() 应用回选择。

请参阅下面的 jsfiddle,它什么都不做,只是尝试从 getSelection() 保存范围并在不更改任何其他内容的情况下恢复它。

var selection = window.getSelection()

$('#textfield').keyup(function() {
  var range = selection.getRangeAt(0)
  selection.removeAllRanges()
  selection.addRange(range)
})

见 jsfiddle

它最初看起来不错并且工作自然,但是当您输入长行时,导致自动换行,换行附近的左箭头键不会将插入符号正确移动到前一行,而是弹回。

aaaaaa
^aaaaaa
(original caret(^) at end of the second line)

aaaaa^
aaaaa
(moved the caret by pressing left arrow key)

aaaaa
^aaaaa
(the caret immediately bounced back to the second line)

这个效果可以在 Firefox 中显示(我的是 FF 16)。

这是一个已知的错误?或者有什么我滥用了?Chrome似乎没有问题。

4

0 回答 0