1

私が持っている場合

var range = document.body.createTextRange(); 

Internet Explorer で呼び出すrange.select();場合、他のブラウザー (Firefox、Chrome、Opera) の範囲選択メソッドと同等のものは何ですか? 範囲オブジェクトを作成して現在の選択に追加した後、contenteditable div 内にキャレットを表示するものを探しています。

ありがとう!

後で編集:アプリケーションをすべてのブラウザーで実行しようとしており、ユーザーがポップアップから選択したテキストの直後に contenteditable div 内にキャレットを配置する必要があるため、これが必要です。これまでのところ、私のアプリケーションは IE で動作していますが、Opera、Firefox、および Chrome でも動作させる必要があります。IE にキャレットを配置するための私の Javascript コードは次のようになります。

 function setCaretPos()
 {
    if (document.selection) 
    {
       /* IE */
       var range = document.body.createTextRange();
       range.moveToElementText(editableDiv);
       var insertedSpan = document.getElementById('span' + count);
       var preCaretRange = document.body.createTextRange();
       preCaretRange.moveToElementText(insertedSpan);
       preCaretRange.moveEnd("character", 2);
       range.setEndPoint("EndToEnd", preCaretRange);
       range.collapse(false);
       range.select();
    }
    else
    {
     if (window.getSelection) {
     /* Firefox, Opera, Chrome */
     var sel = window.getSelection();
     if(sel.rangeCount)
     {
        var range = sel.getRangeAt(0);
        var insertedSpan = document.getElementById('span' + count);
        range.selectNodeContents(insertedSpan);
        range.collapse(false);
        sel.removeAllRanges();
        sel.addRange(range);
       }
     }
 }

上記のコードを使用すると、スパン内のテキストが選択されますが、挿入されたスパンの後にキャレットが表示されず、単に消えてしまうという問題があります。

どんな提案でも大歓迎です。ありがとう!

4

1 に答える 1

2

他のブラウザーでの同等の方法は、Selectionオブジェクトを介して行われます。

var range = document.createRange();
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
于 2013-02-04T15:31:06.773 に答える