码桶

发现社区成员的开源项目

README.md

超链新标签页打开

一款 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

Copyright (c) 白逸. All rights reserved.