Road To Nowhere

主にWebまわりのエンジニア的なお仕事に関するようなことのあれこれ。

Javascriptで選択文字列の取得

選択した(ハイライト表示させた)文字列をjsで取得しようとして、ちょっとだけはまったのでメモ。
まずは最終的なコード。

function getText() {
    IE='\v'=='v';
    var SelectedText;
    if(IE){
        SelectedText = document.selection.createRange().text;
    }
    else{
        SelectedText = window.getSelection().toString();
    }
    alert(SelectedText);
}

ポイントは、firefoxIE以外のブラウザ)のときの

SelectedText = window.getSelection().toString();

これ。

実は

alert(window.getSelection());

これで表示できてしまう。
window.getSelection()の返り値が文字列に見えてしまうんだけど実はオブジェクトで、
alertやdocument.writeのときは自動的に変換されているとのこと。
詳しくはこちら。
window.getSelection - Web API インターフェイス | MDN

window.getSelection()を使用するときは注意!
というよりも、勝手に変換してしまうときがあるってことに驚いた。