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

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

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

リンクの文字列を選択できるようにするGreasemonkeyスクリプト

Firefoxのデフォルトの状態だと、リンクの途中からや、リンクの途中までを選択しようとすると、ページが移動してしまう。

// ==UserScript==
// @name           BetterLinkSelection
// @namespace      http://d.hatena.ne.jp/javascripter/
// @include        http*
// ==/UserScript==

Node = document.createDocumentFragment();
$x("descendant::a").forEach(function(link){
    link.draggable = false;
  });

document.addEventListener("DOMNodeInserted", function(e){
    if (e.target.nodeType != Node.ELEMENT_NODE) return;
    $x("descendant-or-self::a", e.target).forEach(function(link){
        link.draggable = false;
      });
  }, false);

document.addEventListener("click", function(e){
    if (e.target.nodeType != Node.ELEMENT_NODE) return;
    document.getSelection() && e.preventDefault();
  }, false);

function $x(exp, ctx){
  var xp = (ctx && ctx.ownerDocument || document).evaluate(exp, ctx || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null),
      r = [];
  for (var i = 0;i < xp.snapshotLength;++i)
    r.push(xp.snapshotItem(i));
  return r;
}