Add TheVerge paywall remover user script
This commit is contained in:
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Barış
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
58
README.md
Normal file
58
README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# TheVerge Unlimited Reading (Paywall Remover)
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
A lightweight userscript that removes intrusive overlays on The Verge and restores a clean, distraction-free reading experience.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Click below to install directly in Tampermonkey:
|
||||
|
||||
[](https://raw.githubusercontent.com/arg0WAK/theverge-paywall-remover/main/script/theverge-paywall-remover.user.js)
|
||||
|
||||
---
|
||||
|
||||
## How it works
|
||||
|
||||
This script uses two layered approaches:
|
||||
|
||||
### DOM observer (fallback)
|
||||
Detects dynamically injected overlays and removes them automatically.
|
||||
|
||||
---
|
||||
|
||||
## Release Notes
|
||||
|
||||
### v1.0.0
|
||||
- Initial release
|
||||
- Overlay removal system
|
||||
- Scroll restoration fix
|
||||
- Dynamic DOM handling support
|
||||
|
||||
---
|
||||
|
||||
## Keywords
|
||||
|
||||
```txt
|
||||
theverge clean view
|
||||
theverge reading mode
|
||||
remove overlay theverge
|
||||
zephr overlay remover
|
||||
article clean mode
|
||||
scroll unlock page
|
||||
website readability enhancer
|
||||
userscript reading fix
|
||||
tampermonkey verge script
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Disclaimer
|
||||
|
||||
This project is intended for educational and UI experimentation purposes.
|
||||
Websites may change structure at any time.
|
||||
60
script/theverge-paywall-remover.user.js
Normal file
60
script/theverge-paywall-remover.user.js
Normal file
@@ -0,0 +1,60 @@
|
||||
// ==UserScript==
|
||||
// @name TheVerge Unlimited Reading
|
||||
// @namespace https://github.com/arg0WAK
|
||||
// @version 2026-04-23
|
||||
// @description Kills paywall overlays and gives you your scroll back on The Verge.
|
||||
// @author github.com/arg0WAK
|
||||
// @match https://www.theverge.com/*
|
||||
// @icon https://www.google.com/s2/favicons?sz=64&domain=theverge.com
|
||||
// @grant none
|
||||
// ==/UserScript==
|
||||
|
||||
const forbiddenSelectors = [
|
||||
'.zephr-zone-footer',
|
||||
'.zephr-footer-container',
|
||||
'.zephr-overlay',
|
||||
'#zephr-zone-footer',
|
||||
'#zephr-footer-container',
|
||||
'#zephr-overlay'
|
||||
];
|
||||
|
||||
const isRoot = el =>
|
||||
el === document.body || el === document.documentElement;
|
||||
|
||||
const fixStyles = el => {
|
||||
if (!isRoot(el)) return;
|
||||
|
||||
const s = getComputedStyle(el);
|
||||
|
||||
if (s.overflow === 'hidden') {
|
||||
el.style.setProperty('overflow', 'unset', 'important');
|
||||
}
|
||||
|
||||
if (s.position === 'fixed') {
|
||||
el.style.cssText += `
|
||||
position:unset !important;
|
||||
padding:0 !important;
|
||||
top:unset !important;
|
||||
`;
|
||||
}
|
||||
};
|
||||
|
||||
const clean = () =>
|
||||
forbiddenSelectors.forEach(sel =>
|
||||
document.querySelectorAll(sel).forEach(el => el.remove())
|
||||
);
|
||||
|
||||
new MutationObserver(muts => {
|
||||
muts.forEach(m => {
|
||||
if (m.type === 'attributes') fixStyles(m.target);
|
||||
if (m.type === 'childList') clean();
|
||||
});
|
||||
}).observe(document, {
|
||||
subtree: true,
|
||||
childList: true,
|
||||
attributes: true,
|
||||
attributeFilter: ['style']
|
||||
});
|
||||
|
||||
[document.body, document.documentElement].forEach(fixStyles);
|
||||
clean();
|
||||
Reference in New Issue
Block a user