3

私は厄介な問題に直面しています。私は小さな RTE に取り組んでおり、要素の最後にキャレットを移動しようとしています。

現在、ここに私が持っているコードがあります(この投稿からカーソルを contenteditable エンティティの最後に移動する方法):

範囲とウィンドウで動作するカスタム関数がいくつかあります。私はそれらが正しいとほぼ確信しています。

function(contentEditableElement){
    var contentEditableElement = this.getFocusedElement().parentNode;
    if(this.contentDoc.createRange)//Firefox, Chrome, Opera, Safari, IE 9+
{
    range = this.contentDoc.createRange();//Create a range (a range is a like the selection but invisible)
    range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range
    range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start
    selection = this.win.getSelection();//get the selection object (allows you to change selection)
    selection.removeAllRanges();//remove any selections already made
    selection.addRange(range);//make the range you have just created the visible selection
 }
else if(this.doc.selection)//IE 8 and lower
{ 
    range = document.body.createTextRange();//Create a range (a range is a like the selection but invisible)
    range.moveToElementText(contentEditableElement);//Select the entire contents of the element with the range
    range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start
    range.select();//Select the range (make it the visible selection
}
}

FF と Opera では非常にうまく機能しますが、Chromium ではキャレットが動かないだけです。

正しい方法を見つけるのを手伝ってもらえますか? ありがとう

4

0 に答える 0