码桶
发现社区成员的开源项目
README.md2.8 KB
# 超链新标签页打开
一款 Chrome 扩展,强制页面内所有超链接在**新标签页**中打开,并提供随时开关的开关按钮。
## 功能特性
- **全局生效**:拦截页面中所有 `<a>` 链接的左键点击,改为新标签页打开。
- **一键开关**:点击工具栏图标,通过开关随时启用或停用,状态实时同步到所有页面。
- **图标反馈**:开启 / 关闭状态由工具栏图标直观呈现。
- **智能跳过**,以下情况保持浏览器默认行为,不做干预:
- 页内锚点(`#...`)
- `javascript:` / `mailto:` / `tel:` / `sms:` / `blob:` / `data:` 等特殊协议
- 带 `download` 属性的下载链接
- 已设置 `target="_blank"` 的链接
- 按住 `Ctrl` / `Cmd` / `Shift` / `Alt` 或使用鼠标中键、右键的点击
- **兼容性强**:通过 `composedPath()` 支持 Shadow DOM 与 `<svg>` 内部链接。
- **安全打开**:使用 `noopener,noreferrer` 打开新页面,防止新标签页通过 `window.opener` 反向操作原页面。
## 安装方法(开发者模式)
1. 打开 Chrome,地址栏输入 `chrome://extensions` 回车。
2. 打开右上角的 **开发者模式**。
3. 点击 **加载已解压的扩展程序**。
4. 选择本扩展所在的文件夹(包含 `manifest.json` 的目录)。
5. 安装完成,工具栏出现扩展图标即可使用。
## 使用说明
- 安装后默认**开启**,此后浏览网页时点击任意链接都会在新标签页打开。
- 点击工具栏图标弹出面板,拨动开关即可启用或关闭。
- 关闭后链接恢复浏览器默认打开方式,图标同步切换为“关闭”样式。
## 文件结构
| 文件 | 说明 |
| --- | --- |
| `manifest.json` | 扩展清单(Manifest V3),声明权限、图标、脚本入口 |
| `content.js` | 内容脚本,`document_start` 注入所有页面,拦截链接点击 |
| `background.js` | 后台服务 worker,维护开关状态并同步工具栏图标 |
| `popup.html` | 工具栏弹出窗口界面 |
| `popup.js` | 弹窗逻辑,读取 / 写入开关状态 |
| `icon48*.png` / `icon128*.png` | 开启与关闭两种状态的图标 |
## 工作原理
内容脚本在**捕获阶段**监听 `click` 事件,从事件路径向上查找最近的 `<a>` 元素。若命中且不属于“智能跳过”的情况,则阻止默认行为并调用 `window.open(url, "_blank", "noopener,noreferrer")`。
开关状态保存在 `chrome.storage.local` 中,通过 `chrome.storage.onChanged` 在内容脚本、后台与弹窗之间实时同步,确保切换即时生效、无需刷新页面。
## 权限说明
本扩展仅申请 `storage` 权限,用于保存开关状态。不收集、不上传任何浏览数据。
## 版本
当前版本:**1.2.0**
## 版权
作者:**白逸** | 官网:[imxcy.cn](https://imxcy.cn)
Copyright (c) 白逸. All rights reserved.