忍者ブログ

Information

javascriptその他いろいろで何か作ってます。

JSEditBoxを公開しました

JSEditBoxを公開しました

使い方 :
inテキストエリアにテキストを貼り付ける

functionテキストエリアにスクリプトを書く

functionボタンを押す

outテキストエリアに結果が表示される


サンプル : 行番号付加スクリプト


開発ノート

MDN - Web Storage API を使用する の localStorageの機能検出の部分に『 localStorage がサポート済みかつ使用可能であるかを検出する関数 』が載っていたのでコピペして組み込んだ。

androidな環境でtextareaにtabを入力してインデントしたいと思ったのが泥沼の入り口だった。
tabを挿入するだけなら HTMLCenter Insert Text Into Textareas Using Javascript April 4, 2009 Javascript Tutorials by Curtiss の関数で出来たが、テキストの先頭に挿入出来ない。
if(obj.selectionStart)でセレクションオブジェクトの判定をしているのが原因だった。 selectionStartの値が0のとき単純な判定式だとfalseになって弾かれてしまう。
if("selectionStart" in obj)に書き換えた。

複数行選択されているときインデント/アウトデントするようにした。
tabを行頭に挿入するか有効な文字列の先頭に挿入するか悩んだ。どっちでもたいして変わらないが行頭に挿入することにした。 正規表現でさっくりと処理できると思ったら上手く行かず手間取った。

IE用の範囲選択処理を Archiva textareaの選択範囲を取得し、前後に文字列を挿入する 2007–03–23 /web/javascript 中級プログラマの自宅でPHP ブログ 2010-12-21 textarea文字列をタグで囲んだ後のカーソル表示 を参考に書き換えた。

firefoxだとerrorオブジェクトでエラー発生行と列が取れる。他のブラウザではスタックトレースを参照するようにした。window.onerrorハンドラで処理したほうが簡単かと試してみたらイベントが発火しない(´Д`)…。 IE系のエラーメッセージはどうにもならんので放置。

PR

コメント

カテゴリー

P R