リンクのテキストを選択

Greasemonkey にしたくて、Bookmarklet のほうをコピーしました。
比較演算子とブロックの中括弧はいじって、while (node = node.parentNode) な書き方も変えた。好みの問題。

// ==UserScript==
// @name           Select text of link
// @namespace      http://kgr.s56.xrea.com/userscripts/
// @include        *
// ==/UserScript==

(function() {
	document.addEventListener('mousedown', function(e) {
		if (e.button !== 0 || e.ctrlKey || e.shiftKey || e.altKey) {
			return;
		}

		var node = e.explicitOriginalTarget;
		if (node.nodeType !== node.TEXT_NODE) {
			return;
		}

		do {
			if (typeof node.hasAttribute === 'function' && node.hasAttribute('href')) {
				break;
			}
			node = node.parentNode;
		} while (node);

		if (!node) {
			return;
		}
		e.stopPropagation();

		node.setAttribute('draggable', 'false');
		document.addEventListener('mouseup', function mouseup(e) {
			document.removeEventListener(e.type, arguments.callee, true);
			node.removeAttribute('draggable');
			if (!window.getSelection().isCollapsed) {
				document.addEventListener('click', function click(e) {
					document.removeEventListener(e.type, arguments.callee, true);
					e.preventDefault();
					e.stopPropagation();
				}, true);
			}
		}, true);
	}, true);
})();

少し修正。... node = node.parentNode; } while (node.parentNode); とやってしまっていた。