WebTab等插件出事后:不到100行代码,带你做一个干净透明的新标签页

前段时间我写过《别再无脑装插件了,你的浏览器可能在偷家》juejin.cn/post/755347... ,提醒大家:浏览器插件的权限远比想象大。

结果没过多久,就看到有些标签页插件被曝偷偷上传数据的新闻。

女朋友问我:"那我们还敢装吗?

我说:"别慌,要不我们自己做一个?

实话讲,浏览器扩展不是小玩具。它能读写你的本地存储、拦截网络请求、看你的标签页和历史,甚至通过特权接口拿到一些你以为安全的东西;一旦失守,隐私就是敞开的大门。与其盲装、把钥匙交给别人,不如把门锁装回自己手里,做一个干净透明的浏览器标签页,知根知底。

做一个新标签页其实不难:一份 manifest,几行 HTML/CSS,再加一丢丢 JS,就能把主页改成你喜欢的样子。权限只留必要的、能不发网请求就不发、数据都放在本地;代码简单到你一眼能审、每一步都看得懂。

如果你读过那篇"别再无脑装插件"的提醒,这就是它的行动版。而且写标签页这事跟写网站页面没啥区别:本质就是"一个普通网页 + 一份清单"。

这篇文章用不到100行代码,带你做一个干净透明的新标签页,做完你会发现:新标签页并不复杂,更不必神秘------最重要的是,你清楚每一行代码在做什么,安心又可控。

先看效果

项目结构

bash 复制代码
newtab
├── icons              # 插件的"图标"
├── index.html         # 标签页页面
├── manifest.json      # 插件身份证
├── newtab.js          # 标签页页面脚本
└── style.css          # 标签页页面样式

快速开始

从github仓库拉代码,本地安装

5分钟搞定安装:下载仓库代码 → 加载扩展 → 开始使用!

🚀 浏览项目的完整代码可以点击这里 github.com/Teernage/ne...,如果对你有帮助欢迎Star。

一步步来

创建文件夹 newtab

创建manifest.json文件

这个文件是插件的身份证,告诉浏览器你的插件是谁、能干啥。

json 复制代码
{
  "manifest_version": 3,
  "name": "极简新标签页",
  "version": "1.0.0",
  "icons": {
    "16": "icons/16.png",
    "32": "icons/32.png",
    "48": "icons/48.png",
    "128": "icons/128.png"
  },
  "chrome_url_overrides": {
    "newtab": "index.html"
  }
}    

关键点解读:

字段 说明
manifest_version: 3 使用最新的 Manifest V3 扩展规范
name 插件名称
version 插件版本号
icons 图标集
chrome_url_overrides 覆盖新标签页入口

最关键的是 chrome_url_overrides :它会把 Chrome 的内置页面(最常见是 chrome://newtab )换成你插件包里的 HTML 页面。只需在manifest文件中把 newtab 指向 index.html ,用户每次打开新标签页看到的就是你的 index.html 内容,这就是插件自定义新标签页的核心原理。

创建index.html文件

index.html就是你要自定义的标签页

🔗 文件源码链接

创建manifest.json文件

🔗 文件源码链接

newtab.js文件

作用:时间更新、搜索行为、图标数据驱动渲染

🔗 文件源码链接

style.css文件

作用:标签页的样式

🔗 文件源码链接

创建文件夹 icons,文件夹中的图标在下面的仓库中下载

作用:扩展展示用图标集

🔗 源码链接

一键安装

  1. 打开Chrome浏览器
  2. 地址栏输入:chrome://extensions/
  3. 打开右上角"开发者模式"
  4. 点击"加载已解压的扩展程序"
  5. 选择newtab文件夹
  6. 搞定!扩展安装完成!

操作演示图:

以上只是一个入门级的新标签页demo,你可以按喜好继续扩展成自己的版本。如果觉得纯原生 JS 在维护性上不够友好,推荐使用我的Vue 的插件脚手架juejin.cn/post/754380... :内置基于 Vue 的新标签页模板、侧边栏模板、Popup 弹窗模板等,用 Vue 开发更顺手、代码组织更清晰。若想实现类似 Infinity 新标签页的图标列表拖拽效果,也可以参考我的拖拽指令一个Vue自定义指令搞定丝滑拖拽列表,告别复杂组件封装 juejin.cn/post/751133...

总结

  • 核心原理:用一份 manifest.json 把 chrome://newtab 指向你的 index.html ,本质就是"一个普通网页 + 一份清单",不需要额外权限即可接管新标签页。
  • 目录职责清晰: manifest.json 负责接管入口, index.html 提供骨架, style.css 管视觉, newtab.js 管交互与数据, icons/ 放扩展图标。
  • 安全与隐私:尽量使用本地资源、最小权限、不做不必要的网络请求;每一行代码看得懂、改得动,才能放心使用。
  • 可扩展建议:如果需要更强的可维护性与组件化,使用基于 Vue 的插件脚手架;若要实现类似 Infinity 的图标拖拽,参考拖拽指令即可快速增强交互。

如果觉得对您有帮助,欢迎点赞 👍 收藏 ⭐ 关注 🔔 支持一下!

往期实战推荐:

相关推荐
纸上的彩虹1 天前
半年一百个页面,重构系统也重构了我对前端工作的理解
前端·程序员·架构
be or not to be1 天前
深入理解 CSS 浮动布局(float)
前端·css
LYFlied1 天前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
老华带你飞1 天前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小徐_23331 天前
2025 前端开源三年,npm 发包卡我半天
前端·npm·github
C_心欲无痕1 天前
vue3 - 类与样式的绑定
javascript·vue.js·vue3
GIS之路1 天前
GIS 数据转换:使用 GDAL 将 Shp 转换为 GeoJSON 数据
前端
JIngJaneIL1 天前
基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
天天扭码1 天前
以浏览器多进程的角度解构页面渲染的整个流程
前端·面试·浏览器
你们瞎搞1 天前
Cesium加载20GB航测影像.tif
前端·cesium·gdal·地图切片