Firefox 浏览器附加组件
  • 扩展
  • 主题
    • 适用于 Firefox
    • 字典和语言包
    • 其他浏览器网站
    • 适用于 Android 的附加组件
登录
Force New Tab 预览

Force New Tab 作者: SurgWaterfox

Opens JavaScript driven buttons in new tabs like standard html links.

4(1 条评价)4(1 条评价)
1 个用户1 个用户
下载 Firefox 并安装扩展
下载文件

扩展元数据

屏幕截图
关于此扩展
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:

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
开发者留言
Purpose:
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.
Content Script Scope (<all_urls>)
The content script runs on all URLs (<all_urls>) because it needs to be active on any website where the user may want to use middle-click to force a new tab; even on JavaScript heavy SPAs. However, the script does not collect, transmit, or store any content or personal user data. It acts only on user initiated middle-clicks.

Use of Script Injection
To enable interception of navigation APIs (e.g., window.open, history.pushState, and history.replaceState), the extension injects a helper script into the page context. This allows the interception of navigation caused by JS driven buttons that don’t generate standard click events. The injected script does not collect data or introduce additional functionality beyond enabling new tab navigation. This pattern is necessary because content scripts cannot patch page navigation APIs directly.

Background Service Worker
The background script is a Manifest V3 service worker. It simply opens the specified destination URL in a background tab in response to the content script’s message. It does not store data between invocations or use persistent storage. Deduplication is only handled within the brief window of a single service worker session (to prevent multiple simultaneous tabs from opening on accidental double clicks).

Privacy Practices
The extension does NOT transmit user data to any remote server, nor does it collect, read, or modify page content, cookies, or history. Only destination URLs from the click action are used, and only for the sole purpose of opening a new tab as per user intent.

Permissions Requested
The only permission requested is tabs, which is strictly required to open new tabs in response to user actions.
评分 4(1 位用户)
登录以评价此扩展
目前尚无评分

已保存星级评分

5
0
4
1
3
0
2
0
1
0
阅读全部 1 条评价
权限与数据

必要权限:

  • 获取浏览器标签页
  • 访问您在所有网站的数据

收集的数据:

  • 开发者称此扩展无需收集数据。
详细了解
更多信息
附加组件链接
  • Copy add-on ID
版本
1.3.0
大小
12.43 KB
上次更新
1 个月前 (2026年4月21日)
相关分类
  • 标签页
许可证
MIT 许可证
版本历史
  • 查看所有版本
添加到收藏集
举报此附加组件
转至 Mozilla 主页

附加组件

  • 关于
  • Firefox 附加组件博客
  • 扩展工坊
  • 开发者中心
  • 开发者政策
  • 社区博客
  • 论坛
  • 报告缺陷
  • 评价指南

浏览器

  • Desktop
  • Mobile
  • Enterprise

产品

  • Browsers
  • VPN
  • Relay
  • Monitor
  • Pocket
  • Bluesky (@firefox.com)
  • Instagram (Firefox)
  • YouTube (firefoxchannel)
  • 隐私
  • Cookie
  • 法律

除非另有注明,否则本网站上的内容可按知识共享 署名-相同方式共享 3.0 或更新版本使用。