Prefetch links when hovered

Prefetch links that were hovered for several milliseconds

נכון ליום 21-08-2014. ראה הגרסה האחרונה.

// ==UserScript==
// @name           Prefetch links when hovered
// @description    Prefetch links that were hovered for several milliseconds
// @author         Anon
// @version        0.1.0
// @license        Public domain
// @include        *
// @require        https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
// @grant          GM_xmlhttpRequest
// @grant          GM_log
// @namespace      https://greasyfork.dpdns.org/scripts/4396
// ==/UserScript==

var alreadyPrefetched = {};
var excludedPatterns = /sign[\s_-]?in|sign[\s_-]?out|log[\s_-]?in|log[\s_-]?out|sign[\s_-]?up|subscribe|edit|delete|remove|send|apply|confirm|register/i;
var prefetchStartTimerID = 0;

function testRegExp(regexp, strings)
{
	for (var i = 0; i < strings.length; i++)
	{
		if (regexp.test(strings[i]))
			return true;
	}
	
	return false;
}

$("body").on("mouseenter", "a", function (e)
{
	var anchorObject = $(e.target);
	var anchorHref = anchorObject.attr("href");
	var anchorInnerText = anchorObject.text();
	var anchorTitle = anchorObject.attr("title");
	
	if (anchorHref === undefined || alreadyPrefetched[anchorHref])
		return;
		
	if (/^#/.test(anchorHref) || testRegExp(excludedPatterns, [anchorHref, anchorInnerText, anchorTitle]))
	{
		GM_log("Did not prefetch \"" + anchorHref + "\" because it contained an excluded pattern."); 
		
		return;
	}
	
	clearTimeout(prefetchStartTimerID);
	
	prefetchStartTimerID = setTimeout(function ()
	{
		GM_xmlhttpRequest({ 
			method: "GET", 
			url: anchorHref, 
			onload: function() 
			{
				GM_log("Prefetched \"" + anchorHref + "\".");
			}});
		
		alreadyPrefetched[anchorHref] = true;
	}, 200);
})

$("body").on("mouseout", "a", function (e)
{
	clearTimeout(prefetchStartTimerID);
});
长期地址
遇到问题?请前往 GitHub 提 Issues,或加Q群1031348184

赞助商

Fishcpy

广告

Rainyun

注册一下就行

Rainyun

一年攒够 12 元