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 小时前
关于Vue 3 <script setup> defineXXX API 总结
前端·javascript·vue.js
500佰1 小时前
AI 财务案例 普通财务人的AI in ALL
前端·人工智能
军军3601 小时前
动态星空粒子效果
前端
n***i951 小时前
重新定义前端运行时:从浏览器脚本到分布式应用层的架构进化
前端·架构
AAA阿giao1 小时前
从零开始:用 Vue 3 + Vite 打造一个支持流式输出的 AI 聊天界面
前端·javascript·vue.js
玉宇夕落1 小时前
Vue 3 实现 LLM 流式输出:从零搭建一个简易 Chat 应用
前端·vue.js
开源之眼1 小时前
github star都很多的 React Native 和 React 有什么区别?一文教你快速分清
前端
听风说图1 小时前
AI编程助手为何总是"健忘"?
前端
踩着两条虫1 小时前
开源一个架构,为什么能让VTJ.PRO在低代码赛道“炸裂”?
前端·低代码