要件は「ワンクリックで特定の部分を範囲指定したい」ですが、適当なコードで使っていたらGoogle Chromeから警告が来ました。
参考:もうaddRangeで範囲追加はできなくなるよ
https://www.chromestatus.com/feature/6680566019653632
たまに動かないことがあり、困ったなと思っていたら、海外知恵袋で解決策が書いてありました。よく文章を読んで見ていればわかったのですが、「範囲の追加」ができないわけで、範囲指定自体はできるようです。
今ある範囲をクリアしてから使ってね。と言っているだけでした。
function spotRange(_element) {
var r = document.createRange();
r.selectNodeContents(_element);
var a = window.getSelection();
a.removeAllRanges();
a.addRange(r);
}
removeAllRangesを追加して、動くようになりました。
予め範囲指定してあると、getSelection でそれを読み取れるのがよろしくない、ということですかね。