素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

カーソル位置の英単語を取得する

document.addEventListener('mousemove',
function(e) {
  var range = e.rangeParent;
  if (range.nodeType != Node.TEXT_NODE) return;
  var word = getWord(range.wholeText, e.rangeOffset);
  if (word) console.log(word);
},
false);

function getWord(baseText, point) {
  var words = baseText.split(/(\b)/i);
  var word = null;
  for (var i = n = 0; i < words.length; i++)
  if (point < (n += words[i].length)) {
    if (/^\w+$/i.test(words[i])) word = words[i];
    break;
  }
  return word;
}

カーソル位置の単語を、カーソルが動くたびにconsole.logに出力する。
ただし、Greasemonkeyスクリプトからはセキュリティエラーで使えない。

参考にしたところ:MouseoverDictionary