Chrome 插件自动保存,断网崩溃也不怕!99% 表单党不知道的救命神器!

大家一定都有遇到这种情况,在某个网站表单中编辑了很多内容,正准备提交的时候,不小心刷新了页面,或者浏览器意外关闭、系统崩溃、网络闪断、会话过期等各种场景,导致我们的长表单数据丢失,然后我们重新就得重新编辑提交。

如果有一款浏览器插件能实时保存我们输入的内容,还能及时恢复数据,那样就能省很多事情。

今天也是用codebuddy+V0手搓了一个chrome插件

目前能想到比较聚焦化的高场景:政企/招投标/科研申报/考试报名/跨境物流/广告投放/财税申报/OA-审批/CRM/工单系统等。

普适场景的话:长篇内容创作(博客、知识库、论坛)、客服工单、求职/招生报名,写求职信息总是填一大堆东西,烦的一批

1. Chrome 插件准备

首先,项目的核心在于其文件结构和每个文件的角色。

  • manifest.json:这是插件的配置文件,定义了插件的元数据和权限。它声明了插件名称、版本、描述,并指定了以下关键组件:
    • permissions : 申请了 storage 权限用于本地存储数据,以及 activeTab 权限用于与当前活跃标签页的网页进行交互。
    • background : 指定 background.js 作为后台脚本,在浏览器后台长期运行,处理全局事件。
    • content_scripts : 指定 content.js 作为内容脚本,它会被注入到所有网页 (<all_urls>) 中,以便与页面 DOM 交互。
    • action : 定义了点击插件图标后弹出的窗口,指向 popup/popup.html。
  • content.js:内容脚本,负责与网页内容进行直接交互。它的主要任务是监听网页上的输入事件、保存数据,并响应弹窗发来的恢复请求。
  • background.js:后台脚本,处理插件的全局生命周期事件,比如安装事件和标签页更新事件。
  • popup/popup.html:弹窗界面,包含了用户可以看到和交互的所有元素,如恢复按钮、清除按钮和已保存网站列表。
  • popup/popup.js 和 popup/popup.css:分别处理弹窗的交互逻辑和样式。

2. 页面内容监听

实现自动保存的核心在于 content.js 文件。

  • 获取 XPath :content.js 首先定义了一个 getXPath 函数。这个函数通过递归遍历父节点,为每一个输入元素生成一个唯一的 XPath 路径。如果元素有 ID,则直接使用 ID,否则通过父节点和同级元素的索引来构建路径。
  • 监听事件 :脚本会为整个 document 添加一个 input 事件监听器。只要用户在任何 <input> 或 <textarea> 中输入内容,该事件就会被触发。
  • 按域名保存 :当事件触发时,脚本会获取当前页面的域名作为键名。然后,它将输入框的 id、name、xpath 和 value 等信息打包成一个对象。这个数据对象会被保存到 chrome.storage.local 中,并以域名作为键进行分组。如果该输入项的数据已经存在,则会更新其值;否则,会添加新数据。

3. 定义数据恢复管理页面

popup/popup.html 是用户与插件交互的界面。它包含以下元素:

  • 恢复按钮:用于触发数据恢复操作。
  • 清除按钮:用于清除当前网站的已保存数据。
  • 已保存网站列表 :一个容器 (domainsContainer),用于动态展示所有已保存过数据的网站列表。

4. 恢复数据

恢复数据的过程涉及弹窗脚本 和内容脚本之间的通信。

  • 发送恢复消息 :当用户在弹窗中点击"恢复"按钮时,popup/popup.js 会向当前活动标签页的 content.js 发送一条消息,请求执行 restoreInputs 操作。
  • 执行恢复操作 :content.js 中的消息监听器会接收到这个请求。它会根据当前域名从本地存储中读取所有已保存的输入数据。然后,脚本会遍历这些数据,并尝试使用 id、name 或 xpath 精确定位页面上的对应输入框。如果成功找到,它会将保存的 value 填充到输入框中。

5. 域名缓存列表

为了在弹窗中展示已保存数据的网站列表,同样需要通信:

  • 发送获取消息 :在 popup.js 中,loadDomainsList 函数会向 content.js 发送一个 getDomains 消息。

  • 读取并返回数据 :content.js 收到消息后,会查询 chrome.storage.local 中的所有数据。它会过滤出所有以域名为键的数组数据,并将其作为响应发送回 popup.js。

  • 在弹窗中展示 :popup.js 接收到域名列表后,会遍历这个列表,并为每个域名创建一个新的 HTML 元素。它还会再次查询本地存储以获取每个域名下保存的输入项数量,并将其显示在列表中,为用户提供清晰的数据概览。

欢迎后台找我领取源码 也可以直接上GitHub

数据救命神器 Chrome 扩展

相关推荐
ServBay3 小时前
AI说代码没漏洞?马上被 PHP 打脸了
aigc·php·ai编程
殷紫川6 小时前
14款大模型Java编码能力横评:闭源三强断层领先,开源追赶到哪一步了
aigc·openai·ai编程
Behavior6 小时前
Kimi K3.1 疑似现身 LMArena:匿名代号 Kibitz、SGLang 单日六条加固 PR,月底有望官宣
llm·aigc·vibecoding
文谦南宁AI普工6 小时前
跨组织 Agent 对接收官:12 条硬条款 + 一个能跑的门检校验器
aigc·agent·ai编程
摩羯12307 小时前
AI提示词备查与原始输入输出记录:生成式人工智能合规的可验证实现
人工智能·aigc
posstos9 小时前
用 MiniMax-H3 做 AI 短剧:一个 SKILL 把剧本自动拆成六段式提示词
人工智能·aigc·ai视频·提示词工程·minimax·ai短剧·分镜脚本
TomEval11 小时前
【测AI】第17篇:大模型评测方法论 —— LLM 怎么测?
人工智能·python·aigc·测试用例
小虎AI生活12 小时前
用 GPT-6 三天做出手机游戏是什么体验?附零基础四步实操
aigc·ai编程
Meta Luo12 小时前
552B 的模型,8B 的成本:DeepSeek V4.1 Flash 1017 到底改了什么
人工智能·ai·aigc
ZKNOW甄知科技13 小时前
燕千云迭代版本发布:智能Agent深入业务现场
运维·人工智能·低代码·机器学习·自然语言处理·自动化·aigc