您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Remove Glassdoor paywall, restore scrolling, and improve site accessibility
// ==UserScript== // @name Glassdoor Paywall Remover // @namespace http://www.greasyfork.org // @version 1.2.2 // @description Remove Glassdoor paywall, restore scrolling, and improve site accessibility // @author NagaYZ // @match *://*.glassdoor.com/* // @match *://*.glassdoor.ca/* // @match *://*.glassdoor.co.uk/* // @match *://*.glassdoor.fr/* // @match *://*.glassdoor.de/* // @match *://*.glassdoor.*/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // CSS Injection function function addGlobalStyle(css) { const head = document.getElementsByTagName('head')[0]; if (!head) return; const style = document.createElement('style'); style.type = 'text/css'; style.textContent = css; // Use textContent instead of innerHTML for better security head.appendChild(style); } // CSS rules to remove paywall and restore scrolling const cssRules = ` /* Hide paywall elements */ #ContentHardsellOverlay, .ContentHardsell, .HardsellOverlay, .hardsellComponent, .HardsellBanner, .restore-access-banner, .SignedOutBanner, .ReactModalPortal, [class*="paywall"], [id*="paywall"], [class*="Paywall"], [id*="Paywall"] { display: none !important; opacity: 0 !important; visibility: hidden !important; } /* Restore scrolling and prevent lock */ html, body { overflow: auto !important; overflow-x: hidden !important; position: static !important; height: auto !important; max-height: none !important; } /* Fix body positioning */ body.main.gdGrid { position: relative !important; } /* Make content visible */ .showing-paywall-content { filter: none !important; -webkit-filter: none !important; blur: none !important; } /* Show hidden content behind paywall */ [class*="blurred"], [class*="Blurred"], .blur-text { filter: none !important; -webkit-filter: none !important; text-shadow: none !important; color: inherit !important; } `; // Add CSS rules addGlobalStyle(cssRules); // Prevent scroll locking events const stopEvents = ['scroll', 'mousemove', 'touchmove', 'mousewheel', 'wheel', 'DOMMouseScroll']; stopEvents.forEach(eventType => { window.addEventListener(eventType, event => event.stopPropagation(), true); }); // Mutation observer to remove dynamically added paywall elements const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.addedNodes && mutation.addedNodes.length) { for (const node of mutation.addedNodes) { if (node.nodeType === Node.ELEMENT_NODE) { // Check for paywall-related classes and IDs if (node.id && (node.id.includes('paywall') || node.id.includes('Paywall') || node.id.includes('Hardsell') || node.id.includes('hardsell'))) { node.style.display = 'none'; } if (node.className && typeof node.className === 'string' && (node.className.includes('paywall') || node.className.includes('Paywall') || node.className.includes('Hardsell') || node.className.includes('hardsell'))) { node.style.display = 'none'; } // Remove modal backdrops if (node.className && typeof node.className === 'string' && node.className.includes('modal')) { document.body.style.overflow = 'auto'; } } } } }); }); // Start observing document for paywall injections observer.observe(document.documentElement, { childList: true, subtree: true }); // Periodically check and remove any body style that prevents scrolling setInterval(() => { if (document.body.style.overflow === 'hidden') { document.body.style.overflow = 'auto'; } if (document.body.style.position === 'fixed') { document.body.style.position = 'relative'; } }, 1000); })();