リッチテキストモードにし、Javascriptでテキストエリアの選択位置に文字を挿入するというものを作っています。


IEだと選択位置に挿入されるのですが、Firefoxでは一番前に挿入されてしまいます。
以下にソースを示しますので、改善点がお分かりの方は、ご指摘・アドバイスしていただければと思います。

// リッチテキストモードにする
function editWindow(){
doc = document.getElementById("edit").contentDocument;
doc.designMode = "on";
}
// ボタンを押して文字挿入
function docInsert(text){
var val = doc.body.innerHTML.toString();
var sel = doc.body.selectionStart;
var sta = val.substr(0, sel);
doc.body.innerHTML = sta + text + val.substr(sel, val.length);
}

※確認環境はFirefox3.0.3です。
※上記のソースはFirefoxのみの箇所を書き出しています。
※こちらの説明が足りない部分がありましたら、コメントにてご指摘下さい。

回答の条件
  • 1人2回まで
  • 登録:2008/10/17 19:40:58
  • 終了:2008/10/20 09:12:27

ベストアンサー

id:GoldenDawn No.3

GoldenDawn回答回数426ベストアンサー獲得回数812008/10/18 23:34:50

ポイント100pt

こんな感じでどうですか。

doc.execCommand('inserthtml', false, text+doc.getSelection()) ;
id:kt26

思い通りに出来ました。こういう方法があったんですね。

大変勉強になりました。ありがとうございます。

2008/10/20 09:11:44

その他の回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/10/17 21:56:25

ポイント5pt

innerHTMLはFirexFoxでも使えますが、動作が若干異なります。

ご質問と同じ環境で試したわけではありませんが、JavaScriptの一部を下記のように変更する必要があると思います。

var val = document.getElementByID("edit");
var sel = val.selectionStart;

参考サイト

id:kt26

リッチテキストモードにしているのに、

「document.getElementByID("edit");」では

タグが取得出来ないのではないでしょうか?


実際に取得出来ませんでした。

2008/10/17 22:40:32
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/10/18 08:08:32

ポイント5pt

リッチテキストモードにしているのに、

「document.getElementByID("edit");」では

タグが取得出来ないのではないでしょうか?

その通りです。

一方で、FireFoxの仕様ではselectionStartはXULコントロールのプロパティになるので、おそらくリッチテキストには適用できないと思います。

id:kt26

あの…「出来ない理由」を聞いているのではありません。

「出来る方法を知りたい」から質問をしているのです。


また、実際にはリッチテキストモードでも、innerHTMLでタグやテキストエリアの内容は取得出来ます。

あなたの提示したソースでは無理なだけです。質問をちゃんと読んで下さい。非常に残念です。

2008/10/18 08:49:45
id:GoldenDawn No.3

GoldenDawn回答回数426ベストアンサー獲得回数812008/10/18 23:34:50ここでベストアンサー

ポイント100pt

こんな感じでどうですか。

doc.execCommand('inserthtml', false, text+doc.getSelection()) ;
id:kt26

思い通りに出来ました。こういう方法があったんですね。

大変勉強になりました。ありがとうございます。

2008/10/20 09:11:44

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません