文字列を選択状態にする

CATEGORYjavascript
<textarea> や <input> だけじゃなく、文字列を選択状態にするスクリプト。
動作確認は、IE と Firefox だけ。

// ele : 選択対象の要素
// start : 選択開始位置 (0 始まり)
// length : 選択する長さ
function selectText(ele, start, length) {
    if (window.getSelection) {
        var rng = window.content.document.createRange()
        if (! start) {
            rng.selectNodeContents(ele)
        } else {
            rng.setStart(ele.firstChild, start + 1)           // 1始まり
            rng.setEnd(ele.firstChild, start + 1 + length)    // 1始まり
        }
        var sel = getSelection()
        sel.removeAllRanges()     // Selection は、複数の Range を持てるので、クリアしておく
        sel.addRange(rng)
    } else {
        var rng = document.selection.createRange()
        rng.moveToElementText(ele)
        if (start) {
            rng.collapse()
            rng.moveStart("character", start)
            rng.moveEnd("character", length)
        }
        rng.select()
    }
}


↓お試し
スクリプトでテキストを選択
  



いやぁ、時間がかかった、Firefox でできる方法を見つけるまで。
検索で引っかかるのは <input> か <textarea> ばっかり (TEXTAREA.setSelectionRange()) だし。
結局、search engine を変え、気分を変えるために日をおいて、それっぽいコードにぶち当たるまで何度も検索。

まあ、何度も探せば、コードが見つかるんだ、という意味では、良い時代になったな。


でも、検索の仕方は考えなきゃいけないな。
<textarea> を検索後から外しちゃうと「TEXTAREA だけではなく…」というようなページも除外しちゃうし。


でも、とりあえずすっきり♪
関連記事
スポンサーサイト

javascript クロスブラウザ

0 Comments

Leave a comment