You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需创建隐藏页面元素构建JavaScript表单及Google Voice历史批量删除

嘿,我来帮你把这两个需求整理清楚,还完善了Google Voice批量删除的代码~

需求一:构建无需创建隐藏页面元素的JavaScript表单

这种表单完全依靠JavaScript动态生成和处理,不需要提前在HTML里定义任何隐藏元素,核心特点包括:

  • 全程用JS动态创建表单、输入控件、提交按钮等DOM元素,无需预先写死HTML结构
  • 表单的验证、数据处理、提交逻辑都由JavaScript接管,可直接通过AJAX发送数据到后端,或本地处理数据
  • 简单实现思路:用document.createElement()生成所需元素,添加name、type等属性后,挂载到页面指定容器(比如body或某个已有div),最后绑定submit事件处理数据
需求二:完善Google Voice历史记录批量删除代码

重要提示:此代码必须在旧版Google Voice历史页面(https://www.google.com/voice/b/0#history)运行,新版页面结构不同,代码会失效

下面是补全并优化后的完整代码,解决了原代码的不完整问题,还添加了防限制的延迟逻辑:

// Code to be run at Legacy Google Voice: https://www.google.com/voice/b/0#history
function sleep(ms) {
    // 延迟函数,避免操作太频繁触发Google的限制
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function deleteMessages() {
    do {
        // 获取页面上所有的消息元素
        const msgs = document.getElementsByClassName('gc-message');
        const itemcount = msgs.length;

        if (itemcount === 0) {
            console.log("所有消息已删除完毕!");
            break; // 没有消息了就退出循环
        }

        console.log(`当前找到 ${itemcount} 条消息,准备删除...`);

        // 遍历每条消息,模拟点击删除按钮
        for (let i = 0; i < itemcount; ++i) {
            // 查找消息对应的删除按钮(适配页面可能的不同类名/标签)
            const deleteButton = msgs[i].querySelector('.gc-delete-button, [aria-label*="删除"]');
            if (deleteButton) {
                deleteButton.click();
                await sleep(600); // 每次删除后延迟,确保页面处理完成
            }
        }

        // 等待删除确认操作完成(如果有弹窗的话)
        await sleep(1200);

    } while (true);
}

// 启动批量删除
deleteMessages();

使用注意事项:

  • 运行代码前,请确保已经登录Google Voice,且停留在旧版历史页面
  • 操作过程中不要关闭页面、切换标签或刷新,否则会中断删除流程
  • 如果代码突然失效,大概率是Google更新了旧版页面的元素结构,需要重新检查消息元素、删除按钮的类名或属性
  • 若遇到删除限制,可以适当延长sleep函数的延迟时间,比如把600改成1000

内容的提问来源于stack exchange,提问作者Geremia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:55:15