您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Bypasses translated pages by removing "tl" parameter after 5 seconds and redirecting towards it (cancel option available)
// ==UserScript== // @name Reddit - Auto-Translation Bypass / Redirect back to original post // @namespace https://nemeth.it/ // @version 0.2 // @description Bypasses translated pages by removing "tl" parameter after 5 seconds and redirecting towards it (cancel option available) // @license MIT // @author nemeth.it // @match *://*.reddit.com/* // @grant none // ==/UserScript== (function() { 'use strict'; // Function to check if the "tl" parameter exists in the URL function hasParameter(name) { return new URL(window.location.href).searchParams.has(name); } // Removes the "tl" parameter from the URL and reloads the page function reloadWithoutParameter() { const url = new URL(window.location.href); url.searchParams.delete("tl"); window.location.href = url.toString(); } // Displays the notice with a cancel button function showNotice() { // Create the notice element const notice = document.createElement("div"); notice.style.position = "fixed"; notice.style.bottom = "20px"; notice.style.right = "20px"; notice.style.padding = "15px"; notice.style.backgroundColor = "#000000"; notice.style.color = "#ffffff"; notice.style.border = "1px solid #333333"; notice.style.borderRadius = "5px"; notice.style.boxShadow = "0px 4px 8px rgba(0, 0, 0, 0.5)"; notice.style.zIndex = "10000"; notice.style.fontFamily = "Arial, sans-serif"; notice.innerHTML = "This page will reload in 5 seconds without the 'tl' parameter."; // Countdown timer let countdown = 5; const countdownText = document.createElement("span"); countdownText.style.marginRight = "10px"; countdownText.innerText = ` (${countdown}s)`; notice.appendChild(countdownText); // Cancel button const cancelButton = document.createElement("button"); cancelButton.innerText = "Cancel"; cancelButton.style.padding = "5px 10px"; cancelButton.style.marginLeft = "10px"; cancelButton.style.border = "none"; cancelButton.style.backgroundColor = "#d32f2f"; cancelButton.style.color = "#ffffff"; cancelButton.style.borderRadius = "3px"; cancelButton.style.cursor = "pointer"; cancelButton.style.fontSize = "14px"; cancelButton.style.textAlign = "center"; cancelButton.style.display = "inline-flex"; cancelButton.style.alignItems = "center"; cancelButton.onclick = function() { clearInterval(timer); document.body.removeChild(notice); }; notice.appendChild(cancelButton); document.body.appendChild(notice); // Countdown and automatic reload const timer = setInterval(function() { countdown -= 1; countdownText.innerText = ` (${countdown}s)`; if (countdown <= 0) { clearInterval(timer); reloadWithoutParameter(); } }, 1000); // Watch for AJAX removal of the "tl" parameter const ajaxCheckInterval = setInterval(() => { if (!hasParameter("tl")) { clearInterval(ajaxCheckInterval); setTimeout(() => { if (document.body.contains(notice)) { document.body.removeChild(notice); } }, 1000); // Remove notice after a 1-second delay } }, 500); // Check every 0.5 seconds } // Script logic: Check if "tl" parameter exists and show the notice if (hasParameter("tl")) { showNotice(); } })();