Open Link in New Tab with Double Click

By cl3m Last update Nov 5, 2008 — Installed 332 times. Daily Installs: 1, 0, 0, 3, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 12, 4, 6, 2, 3, 1, 4, 1, 5, 0, 3, 0, 1, 0, 1, 1, 0
// Open Link in New Tab with Double Click 1.0
// (c) 2008, Clem
// To install, you need Greasemonkey: http://greasemonkey.mozdev.org/
// --------------------------------------------------------------------
// ==UserScript==
// @name          Open Link in New Tab with Double Click
// @namespace     http://clement.beffa.org/labs/projects/greasemonkey/
// @description   Because tabs are great and my macbook misses middle click
// @include       *
// ==/UserScript==

(function() {	
	var lastdbclick=0;
	//mod all links
	var links = document.body.getElementsByTagName('a');
	for (var i = links.length - 1; i >= 0; i--) {
		//in a new tab if dblclick
		links[i].addEventListener("dblclick",
	    function(e) {
	    	lastdbclick = new Date().getTime();
			e.preventDefault();
	        e.stopPropagation();
	        var j = 0;
			var target = e.target;
			while (j<5 && typeof(target.href)=="undefined"){ 
				target = target.parentNode;
				j++;
			}
	        GM_openInTab(target.href);
	    },false);
	    //prevent click on link if dblclick
	    links[i].addEventListener("click",
	    function(e) {
	    	var j = 0;
	    	var target = e.target;
			while (j<5 && typeof(target.href)=="undefined"){ 
				target = target.parentNode;
				j++;
			}
			//only for plain url so it doesn't break too much ajax sites
			if(target.getAttribute("onclick")==null){		
		    	e.preventDefault();
		        e.stopPropagation();
		        setTimeout(function(){
		        	var time = new Date().getTime();
		        	//no dblclick -> open the url
					if (time-lastdbclick > 500) {
						var j = 0;
						var target = e.target;
						while (j<5 && typeof(target.href)=="undefined"){ 
							target = target.parentNode;
							j++;
						}
						document.location=target.href;
					}
				},100);
			}
	    },false);
	}
})();