人気ブログランキング | 話題のタグを見る

私の人生無駄ばかり…そんな日々。


by dugong156
カレンダー
S M T W T F S
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
31

textarea で選択している文字列を選択する

---追記---2008-12-31T08:59:02+09:00
タイトルの
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」ですか、なるほど。

seleoURL_inTA();
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 の方が簡単な気がする。
by dugong156 | 2008-08-17 16:15 | パソコンあれこれ