0

こんにちは、freetextbox内のキャレット位置を取得しようとしています。これは IE でのみ機能する必要があります。Google で見つけたいくつかのスクリプトを試してみましたが、どれも機能しませんでした。正しい結果が得られない..

それを行う方法はありますか?とても簡単にできるように思えますが、そうではありません...

WTKの回答を使用することで、私はそれを理解したと思います!

function GetCaretPossion(o) {
    var r = document.selection.createRange();
    var sel = o.GetSelection();
    var re = o.CreateRange(sel);

    var rc = re.duplicate();
    re.moveToBookmark(r.getBookmark());
    rc.setEndPoint('EndToStart', re);
    return rc.text.length;
}

編集: ドキュメント内の img タグをクリックするまで、これはうまく機能し、o.CreateRange(sel) は [Object, TextRange] ではなく [Object, ControlRangeCollection] を返すようです..この問題を解決する方法はありますか??

Edit2:これにより、テキストのインデックスが表示され、その背後にあるhtmlのインデックスが表示されないように見えるため、結局機能しませんでした..

4

1 に答える 1

1

あなたがそこで何を達成しようとしているのかわかりませんが、(FreeTextBoxのソースコードを見ると)彼らは単に次のことを使用しています。

sel = this.GetSelection();
r = this.CreateRange(sel);

これはFTB_FreeTextBoxオブジェクトです。IEを入手したら(今日の午後のどこかで)、実用的な例を考え出すようにします。

于 2011-10-07T08:12:11.373 に答える