Greasy Fork is available in English.
基于 IndexedDB 存储,支持大容量表单数据,弹窗选择填充,Ctrl+M开关
脚本版本:v6.0 存储引擎:IndexedDB 运行环境:Tampermonkey / Violentmonkey 文档用途:开发维护、二次扩展、问题排查
// 域名标识(数据隔离依据)
const domain = location.hostname;
// IndexedDB 配置
const DB_NAME = 'FormAutoFillDB';
const DB_VERSION = 1;
const STORE_NAME = 'formSchemes';
// 表单捕获规则
const INPUT_SELECTOR = 'input:not([type="hidden"]), textarea, select';
const ALLOWED_INPUT_TYPES = [
'text', 'email', 'tel', 'password', 'number',
'search', 'url', 'date', 'month', 'time'
];
| 变量名 | 类型 | 用途 |
|---|---|---|
db |
IDBDatabase | IndexedDB 数据库实例 |
panel |
HTMLElement | 主操作面板 DOM |
currentModal |
HTMLElement | 当前打开的弹窗 DOM |
所有存储方法均为 async/await 异步模式。
initDB() → Promise<void>domain 作为唯一主键getList() → Promise<Array>[{ name, time, data }, ...]setList(list) → Promise<void>list 完整方案数组getAllDomainData() → Promise<Array>importAllData(dataMap) → Promise<void>{ 域名: 方案数组 } 结构对象getFields() → Array<HTMLElement>type="hidden"textarea / selectgetFirstInput() → HTMLElement | nullshowToast(text) → voidcloseAnyModal() → voidtogglePanel() → voidCtrl+McreatePanel() → voidsaveFormAsNew() → Promise<void>overwriteLatest() → Promise<void>showFillModal() → Promise<void>fillItem(item) → Promise<void>input 事件change 事件showManageModal() → Promise<void>showImportExport() → voidform_backup_时间戳.jsonfillLatest() → Promise<void>Ctrl+Shift+F| 快捷键 | 功能 | 对应函数 |
|---|---|---|
Ctrl + M |
开关主操作面板 | togglePanel() |
Ctrl + Shift + F |
一键填充最近方案 | fillLatest() |
{
"name": "方案名称",
"time": "2026/03/30 18:00:00",
"data": {
"username": "xxx",
"password": "xxx",
"phone": "xxx",
"...": "其他表单字段"
}
}
FormAutoFillDBformSchemesdomain(域名唯一)javascript
{
"domain": "www.example.com",
"list": [方案1, 方案2, ...]
}
| 组件 | 色值 | 用途 |
|---|---|---|
| 主按钮 | #165DFF |
保存、新建方案 |
| 填充按钮 | #00B42A |
选择填充 |
| 删除按钮 | #F53F3F |
删除方案 |
| 覆盖按钮 | #FF7D00 |
一键覆盖 |
| 导入导出 | #722ED1 |
数据备份 |
12px ~ 14px480px170pxcreatePanel() 中添加按钮 DOM在 ALLOWED_INPUT_TYPES 中添加类型即可。
直接修改 IndexedDB 相关工具函数,上层业务无需改动。
在全局 keydown 事件中添加判断分支。