Yahoo direct non-tracking search

Strips tracking and redirection from Yahoo search urls

目前為 2017-02-14 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name          Yahoo direct non-tracking search
// @description   Strips tracking and redirection from Yahoo search urls
// @include       http://*yahoo.tld/*
// @include       https://*yahoo.tld/*
// @version       1.1.2
// @author        wOxxOm
// @namespace     wOxxOm.scripts
// @license       MIT License
// @run-at        document-start
// @require       https://greasyfork.org/scripts/12228/code/setMutationHandler.js?version=175122
// ==/UserScript==

/* jshint lastsemic:true, multistr:true, laxbreak:true, -W030, -W041, -W084 */

setMutationHandler(document, 'form, a', function(nodes) {
	nodes.forEach(function(node) {
		switch (node.localName) {
			case 'form':
				if (node.action.indexOf('/search') > 0) {
						node.addEventListener('submit', function(e){
							e.preventDefault();
							stopPropagation(e);
							e.target.action = e.target.action.replace(/_yl[tu]=[\w;_=.-]+/, '');
							e.target.submit();
						});
				}
				break;
			case 'a':
				node.href = node.href.replace(/;?_yl[tu]=[\w;_=.-]+\/?/, '')
					.replace(/^.+?\/RU=(http[^\/]+)\/?.*$/, function(s, url) { return decodeURIComponent(url) });
				node.removeAttribute('onmousedown');
				node.removeAttribute('data-sb');
				break;
		}
	});
	return true;
});

document.addEventListener('click', stopPropagation, true);
document.addEventListener('mousedown', stopPropagation, true);
window.addEventListener('click', stopPropagation, true);
window.addEventListener('mousedown', stopPropagation, true);

function stopPropagation(e) {
	if (e.target.href) {
		e.stopPropagation();
		e.stopImmediatePropagation();
	}
}