返回首頁 

Greasy Fork is available in English.

IMDb - fix links

Removes all tracking info from imdb links. Keeps other parameters intact.

// ==UserScript==// @name         IMDb - fix links// @namespace    https://github.com/Procyon-b// @version      1.2.2// @description  Removes all tracking info from imdb links. Keeps other parameters intact.// @author       Achernar// @match        https://www.imdb.com/*// @run-at       document-body// @grant        none// ==/UserScript==(function() {"use strict";var t;function fix(u) {return u.replace('?', '?&').replace(/&(pf_rd_[a-z]|ref_)=[^&#]*/g, '').replace('?&', '?').replace(/\?$/, '');}function normalizeLnk(a) {if (/^\/(list|name|title)\/[^\/]+$/.test(a.pathname)) a.pathname+='/';if (/^(\/title\/.*\/fullcredits)\/cast\/?$/.test(a.pathname)) {a.pathname=RegExp.$1;a.hash='cast';}if (/^(\/title\/[^\/]+\/.*)\/$/.test(a.pathname)) {a.pathname=RegExp.$1;}}if (t=location.search) {let s=fix(t);if (s!=t) history.replaceState(null, null, (s || location.pathname)+location.hash);}var num=1, stop=0;function fixL(L, j=0, n=num++) {if (stop && (stop > n)) return;let i=0, a, S=Date.now()+200;for (;a=L[j];j++) {if (a.LnkFixed || !a.href) continue;if (Date.now() > S) {if ( !(stop && (stop > n)) ) setTimeout(function(){fixL(L,j,n)},0);return;}if (a.protocol && a.protocol.startsWith('http') && a.host.endsWith('imdb.com') && a.search) {let s=fix(a.search);if (a.search != s) a.search=s;normalizeLnk(a);}if (a.pathname!=='/') a.LnkFixed=1;}}var SI=0;function init() {new MutationObserver(function(mutL){for (let m of mutL) {if (m.addedNodes) {let e=m.target.querySelectorAll(':scope a');if (e.length) fixL(e);}}}).observe(document, {childList:true, subtree:true});clearInterval(SI);SI=-1;stop=num;fixL(document.links);}window.addEventListener('load', function(){fixL(document.links)});if (document.readyState != 'loading') init();else document.addEventListener('DOMContentLoaded', init);if (SI<0) return;setTimeout(function(){fixL(document.links);},0);SI=setInterval(function(){stop=num;fixL(document.links);},250);setTimeout(function(){stop=num;clearInterval(SI);},2000);})();