ブログ カレンダー

« « 2024 4月 » »
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4

カテゴリ一覧

アーカイブ

最新のエントリ

最新のコメント

最新のトラックバック

趣味のブログ - IE 以外のブラウザで BBcode 及びスマイリーをキャレット位置に挿入

IE 以外のブラウザで BBcode 及びスマイリーをキャレット位置に挿入

カテゴリ : 
XOOPS
執筆 : 
OhYeah! 2010.08.20 02:10
 なんとか、Firefox, Chrome, Opera で、BBcode や顔アイコンをテキストカーソル(キャレット)位置に挿入できるようになりました。
 include/xoops.js の xoopsInsertText 関数を下記のように書き換えるだけです。一応、テストプラグラムで IE8, Fx3.6, Chorome 5.0, Opera 10 で動作確認してあります。
 この変更で、xoopsSavePosition は無用の長物化しています。コメントアウトしてしまっても大丈夫かも…。

function xoopsInsertText(domobj, text)
{
    if (document.selection) { //for IE
        domobj.focus();
        obj = document.selection.createRange();
        obj.text = text;
        obj.select(); // *1 Display caret when text was replaced
    } else if (domobj.setSelectionRange) { // for Fx, Chrome, Opera
        var startPos = domobj.selectionStart;
        var endPos = domobj.selectionEnd;
        var lastPos = startPos + text.length;
        domobj.value = domobj.value.substring(0, startPos) + text
                       + domobj.value.substring(endPos, domobj.value.length);
        domobj.setSelectionRange(lastPos, lastPos); // *2 Move caret to inserted text end
    } else { // for Other Browser
        domobj.value = domobj.value + text;
    }
}

*1 IE では選択テキストを置換するとキャレットが見えなくなるので、処理後はキャレットの再表示が必要です。
*2 Fx, Chrome, Opera では、テキスト挿入後のキャレット位置がブラウザや範囲選択等の条件によって異なるので、キャレットを挿入テキストの直後に移動してやる必要があります。

参考サイト: http://www.tek-tips.com/viewthread.cfm?qid=1226446&page=1

トラックバック

トラックバックpingアドレス http://www.o-ya.net/modules/d3blog/tb.php/10

コメント一覧

OhYeah!  投稿日時 2010.08.21 17:16
naao さん、はじめまして。d3diary は使いやすいし、タグクラウドが標準で装備されているところが気に入りました。でも、d3blog も検討中だったりしますが

引用:ところで、このxoops.jsの件は私も前から何とかならないのかなあ、と思っていたのでありがたいです。XCL をインストールしてまだ2週間くらいなんですが、XOOPS 自体は昔からあるので、こんなことがあるとは想定外でした。さらに、その対策パッチがどこにも見つからないってのは、かなり意外でしたね。
まあ、PHP や JavaScript は最悪コードハックで何とかなるのが良いところですが…。

引用:Firefox,Chromeあたりしか使いませんが、何かあれば報告させていただきますね。ぜひ、よろしくお願いします。
naao  投稿日時 2010.08.20 23:53 | 最終変更
OhYeah!さん、こんにちは。

XUGJから来て登録しました、naaoです。
(d3diaryを使っていただきありがとうございます。)

ところで、このxoops.jsの件は私も前から何とかならないのかなあ、と思っていたのでありがたいです。 Firefox,Chromeあたりしか使いませんが、何かあれば報告させていただきますね。

では。
OhYeah!  投稿日時 2010.08.20 18:33 | 最終変更
 このサイトで、IE6/7 で動作確認してみたところ、いずれも問題なく使用できました。
 xoopsInsertText, xoopsSavePosition のコードは、ターゲットが IE4/5/5.5 あたりだったんですかねえ?