javascriptでテキストエリアのキャレット位置を取得する方法は検索で見つけることができたのですが、

コンテンツの編集を許可したdivタグ内でキャレット位置を取得する方法はありますか?
取得できるのであれば、キャレット位置に文字列(タグ付き)を挿入したいと考えています。

※IEで動作する方法でお願いします。IEでも「insertHTML」が使えれば良かったのですが...。

-------------------------------------
<div id="test" contenteditable="true">あいうえお</div>

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2010/05/20 19:00:48
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:koriki-kozou No.1

回答回数480ベストアンサー獲得回数79

ポイント60pt

はてなの回答欄の太字()ボタンをクリックした場合の処理を参考にしてみると良いと思う


クリックした時に呼び出される関数

http://q.hatena.ne.jp/js/answer_edit.js

function markupBold() {

var textSelection = new TextInputSelection(document.edit.body);

var text = textSelection.getText();

textSelection.setText(addSpanProperty(text, "font-weight", "bold"));

textSelection.select();

}

関連する関数を含むファイル

http://q.hatena.ne.jp/js/textinput_selection.js

This script requires prototype.js.

http://q.hatena.ne.jp/js/prototype.js

Prototype JavaScript framework, version 1.4.0_rc2

単純にならないかなーーーとは思うけど、これが現実

id:clab_yasu

ご回答ありがとうございます。

教えていただきましたプログラムを参考にしてみたのですが、

「TextInputSelection is no a constructor」とエラーになってしまいました。

追記です。

selection.createRange()で解決しました。

ありがとうございました。

2010/05/20 19:00:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません