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

如何使用JavaScript的.click()方法实现按钮高频重复点击?

失效原因

你遇到的点击仅首次生效问题通常由以下几种情况导致:

  • 提前缓存的DOM元素失效:多数抢课系统在触发点击后会重新渲染按钮节点,你最初赋值的buttons[0]指向的是已经被页面移除的旧元素,后续调用.click()实际作用在无效节点上,自然不会触发效果
  • 网站的点击拦截逻辑:抢课系统普遍会给按钮增加防抖、临时禁用逻辑,也有部分站点监听的是mousedown、mouseup等完整鼠标事件流,仅调用原生.click()无法匹配站点的事件监听规则
  • 高频调用被浏览器限制:短时间重复触发.click()可能被浏览器的安全机制默认拦截

优化方案

以下是适配性更高的代码,不用提前缓存元素、模拟完整鼠标事件流,同时自动移除按钮的禁用状态:

function triggerApplyClick() {
  // 每次执行都重新获取按钮,适配DOM刷新场景,选择器可根据实际页面结构调整
  const applyBtn = document.querySelector('input[value="apply"]');
  if (!applyBtn) return;
  
  // 强制清除按钮的禁用状态,绕过站点的临时禁用逻辑
  applyBtn.disabled = false;
  applyBtn.removeAttribute('disabled');
  applyBtn.classList.remove('disabled'); // 适配用class控制禁用状态的站点

  // 模拟完整鼠标点击事件流,覆盖绝大多数站点的事件监听规则
  ['mousedown', 'mouseup', 'click'].forEach(evtType => {
    const evt = new MouseEvent(evtType, {
      bubbles: true,
      cancelable: true,
      view: window
    });
    applyBtn.dispatchEvent(evt);
  });
}

// 间隔建议设为100-200ms,既保证点击频率,也避免触发站点的反爬规则
setInterval(triggerApplyClick, 150);

注意事项

  • 运行代码前需要确认按钮的选择器是否匹配实际页面结构,若按钮是<button>标签而非<input>标签,需要对应调整querySelector的筛选规则
  • 不要把间隔设得过低,部分校园抢课系统会检测短时间高频请求,过高的点击频率可能触发账号临时封禁
  • 代码运行时尽量保持抢课页面处于前台激活状态,浏览器会对后台标签页的定时器自动降频,可能导致点击频率不达标

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:42:00