textarea で選択している文字列を選択する
2008年 08月 17日
タイトルの
textarea で選択している文字列を選択するは検索する←選択してたら選択はされている‥‥orz.....。
時々投稿しようとしている textarea に貼り付けた URL を開こうと思うことがあるので、JsActions に入っていた「選択範囲をURLとして開く」が動かないのもあって、書き換えてみることにした。
■IE、テキストエリア内の選択範囲/キャレットの位置(文字数)を取得する - 戦争
■MSN相談箱 フォームのテキストをリンク化するjavascript
最初の内、カーソルがある textarea をどうやって取得したらいいのか分からず、for と getElementsByTagName とで全部取得してから、selectionStart とselectionEnd でごにょごにょやってみたけど、textarea が2つとかあるとどうもいかん。値が false ならば――で条件でやったんだけど、同じウィンドウで選択し直しすると、前の数値が残ってしまう‥‥。これではいかんということで、いっそのこと、コピーするようにしてみたらと思ったんだけど、コピーだけってどうやってするんだろう?(* ̄▽ ̄;A 検索してやっと見つけた。単語1つだった‥‥orz.....何という‥‥。
「javascript フォーカス」で検索したら「関連検索」に「javascript フォーカス 取得」が出てたのでそっちで検索したらあったあった。
■現在フォーカス(focus)しているテキストフォームのidと値を取得するコード(JavaScript)を教えてもらえれば幸いです。 - 人力検索はてな
「activeElement」ですか、なるほど。
function seleoURL_inTA(){
var sText;
var aE = document。activeElement;
if(aE.selectionStart){
sText = aE.value.slice(aE.selectionStart,aE.selectionEnd);
}
//文字列の範囲を指定するのを探していて、substring 以外に
//slice があるのを知った。マイナス値で後ろから…が可能らしい。
//取り敢えず「httpを含む時には」という条件にした。
sText = aE.value.slice(aE.selectionStart,aE.selectionEnd);
if(sText.match(/http/))openNewTabWith(sText);
//gBrowser.loadOneTab( URL, referrerURI, charset, postData, loadInBackground, allowThirdPartyFixup); こっちの書き方でもいい訳で。
}
■文字列(String)#substring,#slice (in とほほのJavaScriptリファレンス)
後ろを指定しないと残り全部とか、書き方は slice の方が簡単な気がする。