如何让注入浏览器控制台的脚本在页面重载后继续执行?
解决控制台注入脚本因页面刷新中断的方案
因为表单提交后页面会刷新,控制台注入的脚本会直接终止,用localStorage持久化任务队列和进度是最直接的可行办法,控制台注入场景完全适用,具体实现如下:
核心思路
把待提交的表单数据和当前执行进度存在浏览器的localStorage里,每次页面加载(包括提交后的刷新)时,检查localStorage里是否有未完成的任务:
- 存在未完成任务时,处理当前索引的表单,提交前更新进度并存回
localStorage - 所有任务完成后,清除
localStorage里的任务数据
完整代码
直接将这段代码复制到浏览器控制台执行即可,后续页面刷新会自动继续执行任务:
// 替换成你实际的表单数据数组 var taskInputs = [ { /* 第一条表单数据 */ }, { /* 第二条表单数据 */ }, { /* 更多表单数据 */ } ]; // 初始化或读取本地存储的任务状态 var taskState = JSON.parse(localStorage.getItem('autoFormTasks')) || { inputs: taskInputs, currentIndex: 0 }; // 处理未完成任务 if (taskState.currentIndex < taskState.inputs.length) { // 填充当前表单 fillSomeForms(taskState.inputs[taskState.currentIndex]); // 更新任务进度并持久化 taskState.currentIndex++; localStorage.setItem('autoFormTasks', JSON.stringify(taskState)); // 提交表单,页面刷新后会继续处理下一条 clickSubmit(); } else { // 任务全部完成,清理本地存储 localStorage.removeItem('autoFormTasks'); console.log('所有表单提交完成!'); }
注意事项
- 首次执行前,务必把
taskInputs替换成你实际的表单数据数组 - 确保你已有的
fillSomeForms和clickSubmit函数能正常工作 - 如需中途终止任务,在控制台执行
localStorage.removeItem('autoFormTasks')即可
内容的提问来源于stack exchange,提问作者Matteo NNZ
相关产品推荐
相关产品推荐

