您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Stops reddit from tracking your inbound and outbound clicks
当前为
// ==UserScript== // @name Block reddit click tracking // @namespace mjhcfwlmjfzg778evppa995xavvt2nmb // @description Stops reddit from tracking your inbound and outbound clicks // @match *://*.reddit.com/* // @version 1.0 // @grant none // @run-at document-start // ==/UserScript== (function () { "use strict"; var expiredDate = Date.now().toString(); // Capturing event listener on the outermost element. // Runs FIRST, before any others. function beforeClick(e) { var target = e.target; if (target.tagName.toUpperCase() === "A" && target.dataset.hrefUrl) { // Remove link tracking attributes delete target.dataset.inboundUrl; delete target.dataset.outboundUrl; // Mark outbound link as expired so reddit code // does not try to use it if (target.dataset.outboundExpiration) { target.dataset.outboundExpiration = expiredDate; } } } // Bubbling event listener on the outermost element. // Runs LAST, just before the click goes through // (unless reddit code adds any others afterwards) function justBeforeClick(e) { var target = e.target; // If reddit event handlers modified the link, change it back if (target.tagName.toUpperCase() === "A" && target.dataset.hrefUrl) { target.href = target.dataset.hrefUrl; } } // Mark both event listeners as passive so they // won't impact scroll performance var doCapture = { capture: true, passive: true }; var doBubble = { capture: false, passive: true }; window.addEventListener("mousedown", beforeClick, doCapture); window.addEventListener("keydown", beforeClick, doCapture); window.addEventListener("touchstart", beforeClick, doCapture); window.addEventListener("mousedown", justBeforeClick, doBubble); window.addEventListener("keydown", justBeforeClick, doBubble); window.addEventListener("touchstart", justBeforeClick, doBubble); // Patch navigator.sendBeacon() if it is available if (typeof Navigator.prototype.sendBeacon === "function") { // Fake sendBeacon() function that does nothing Navigator.prototype.sendBeacon = function sendBeacon(url) { return true; }; } })();