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 を指定するとけっこう判定がシビアな感じ。
注意点
window.getSelection
は動かないブラウザもあるかも。最近のならだいたい大丈夫 https://caniuse.com/#search=getSelectionSelection#containsNode
は IE11 以前では動作しません。つらい。。。 https://caniuse.com/#search=containsNode