人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

リッチテキストモードにし、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のみの箇所を書き出しています。
※こちらの説明が足りない部分がありましたら、コメントにてご指摘下さい。

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:BODY DOC firefox IE JavaScript
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●5ポイント

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

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

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

参考サイト

◎質問者からの返答

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

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

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


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


2 ● pahoo
●5ポイント

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

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

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

その通りです。

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

◎質問者からの返答

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

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


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

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


3 ● GoldenDawn
●100ポイント ベストアンサー

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

doc.execCommand('inserthtml', false, text+doc.getSelection()) ;
◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ