Force New Tab автор SurgWaterfox
Opens JavaScript driven buttons in new tabs like standard html links.
Метадані розширення
Знімки екрана
Про це розширення
Force New Tab
A Firefox extension that forces middle-click on any element to open in a new tab — including JavaScript-driven buttons, cards, and links that normally ignore middle click.
The Problem
Modern websites are often built as Single Page Applications (SPAs) using frameworks like React, Vue, and Angular. Navigation on these sites is handled entirely by JavaScript rather than standard <a href> links. As a result, middle-clicking elements like cards, buttons, and tiles either does nothing or navigates the current tab instead of opening a new one. Force New Tab solves this transparently, without breaking normal browser behaviour.
How It Works
When you middle-click an element, the extension works through a chain of fallbacks in order, stopping as soon as it finds a URL to open:
Compatibility
The extension is designed to work on as many sites as possible. Tested on:
Site Status Method used
YouTube ✅ Works Page world hooks
Reddit ✅ Works Page world hooks
Twitter / X ✅ Works Page world hooks
Spotify ✅ Works Child anchor search
GitHub ✅ Works Real links / page world hooks
Twitch ✅ Works Page world hooks
Pinterest (cards) ✅ Works Child anchor search
Pinterest (filter buttons) ⚠️ Partial URL polling — current tab also navigates, use back button to restore
Known Limitations
Permissions
The extension requests the following permissions:
No data is collected, stored, or transmitted. The extension has no network access and makes no external requests. All processing happens locally in your browser.
Version History
v1.3.0
v1.2.0
v1.1.0
v1.0.0
License
MIT
A Firefox extension that forces middle-click on any element to open in a new tab — including JavaScript-driven buttons, cards, and links that normally ignore middle click.
The Problem
Modern websites are often built as Single Page Applications (SPAs) using frameworks like React, Vue, and Angular. Navigation on these sites is handled entirely by JavaScript rather than standard <a href> links. As a result, middle-clicking elements like cards, buttons, and tiles either does nothing or navigates the current tab instead of opening a new one. Force New Tab solves this transparently, without breaking normal browser behaviour.
How It Works
When you middle-click an element, the extension works through a chain of fallbacks in order, stopping as soon as it finds a URL to open:
Real links are ignored — if the clicked element is a genuine <a href> link, the extension does nothing and lets the browser handle it natively. (Opens in new tab by default.)
data-* attribute scan — checks the clicked element and its ancestors for common URL attributes like data-href, data-url, data-link, data-navigate etc.
Child anchor search — searches inside the card container for any <a href> link. Useful for sites like Spotify where the image and text are separate elements inside the same card, but only the text has a real link.
Page world hooks — intercepts standard JavaScript navigation methods:
window.open
history.pushState
history.replaceState
location.href
location.assign
location.replace
Click replay — if nothing is captured after 500ms, the extension re-fires mousedown, mouseup, and click events on the element to trigger its JavaScript handler, then intercepts the resulting navigation.
URL polling — as a last resort, monitors window.location.href for changes after the click replay fires. If the URL changes, the new URL is opened in a new tab and the current tab is snapped back to its original URL.
Compatibility
The extension is designed to work on as many sites as possible. Tested on:
Site Status Method used
YouTube ✅ Works Page world hooks
Reddit ✅ Works Page world hooks
Twitter / X ✅ Works Page world hooks
Spotify ✅ Works Child anchor search
GitHub ✅ Works Real links / page world hooks
Twitch ✅ Works Page world hooks
Pinterest (cards) ✅ Works Child anchor search
Pinterest (filter buttons) ⚠️ Partial URL polling — current tab also navigates, use back button to restore
Known Limitations
Strict CSP sites — some sites (like Pinterest) block page-world script injection via Content Security Policy. The extension degrades gracefully, falling back to DOM-based methods that don't require page-world access.
Modal/dialog triggers — buttons that open dialogs rather than navigating to a new page have no URL to open. The extension correctly does nothing in these cases.
Internal framework routers — some sites use heavily customised internal routers (like Spotify's) that bypass all standard navigation methods. The child anchor search and click replay fallbacks handle most of these cases.
Permissions
The extension requests the following permissions:
tabs — required to open URLs in new background tabs
No data is collected, stored, or transmitted. The extension has no network access and makes no external requests. All processing happens locally in your browser.
Version History
v1.3.0
Added URL polling fallback for sites that bypass all JavaScript hooks
Added child anchor search for Spotify-style card components
Added history.replaceState interception
v1.2.0
Added location.href, location.assign, and location.replace interception
Added click replay fallback
v1.1.0
window.open, history.pushState interception
Real link passthrough
data-* attribute fallback
v1.0.0
Initial public release
License
MIT
Rated 0 by 0 reviewers
Permissions and data
Необхідні дозволи:
- Отримувати доступ до вкладок браузера
- Отримувати доступ до ваших даних для всіх вебсайтів
Data collection:
- The developer says this extension doesn't require data collection.
Більше інформації
- Версія
- 1.3.0
- Розмір
- 12,43 КБ
- Востаннє оновлено
- 14 годин тому (21 квіт 2026 р.)
- Пов'язані категорії
- Ліцензія
- Ліцензія MIT
- Історія версій
- Додати до збірки
This extension enables users to middle-click JavaScript driven elements (such as buttons or divs with onclick handlers) and force them to open their destinations in a new browser tab, similar to how native anchor (<a href="">) elements behave. It does not modify or collect page content.