私が持っている場合
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);
}
}
}
上記のコードを使用すると、スパン内のテキストが選択されますが、挿入されたスパンの後にキャレットが表示されず、単に消えてしまうという問題があります。
どんな提案でも大歓迎です。ありがとう!