いつでも発展途上

猫と珈琲とゲームが大好きなシャチ。ITエンジニアらしいです。メモ代わりにいろいろ書いています。

JavaScript で選択したテキストを取得する

これで、ブラウザ上でマウス等で選択したテキストを単に取得します。

window.getSelection().toString();

するのですが、選択されている範囲に、特定の要素が含まれているかどうかをチェックしたいときもあります。

たとえば id="hoge" な要素で選択されているかどうか見たいときは、こんなかんじ。

var element = document.getElementById("hoge");
var sel = window.getSelection();
if (sel.containsNode(element, true)) {
    console.log(sel.toString());
}

Selection#containsNode の第二引数に true を指定すると、すこしでも要素が含まれていれば true が返ってくるようです。細かい動作はちょっと調べきれていませんが、false を指定するとけっこう判定がシビアな感じ。

注意点

参考