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

如何优化JS循环实现按序定时打开关闭剧集链接

优化JavaScript批量剧集链接定时开关脚本

核心需求实现

1. 自动识别页面季数与集数,生成URL列表

通过页面DOM元素提取季和集的信息,无需手动预定义参数:

// 自动提取季数及对应集数,生成完整剧集URL
function getEpisodeUrls() {
  const urls = [];
  // 替换为目标页面中季选项的实际选择器
  const seasonElements = document.querySelectorAll('.season-selector');

  seasonElements.forEach((seasonEl, seasonIdx) => {
    const seasonNum = seasonIdx + 1;
    // 替换为目标页面中对应季的集数元素选择器
    const episodeElements = seasonEl.querySelectorAll('.episode-item');

    episodeElements.forEach((epEl, epIdx) => {
      const episodeNum = epIdx + 1;
      // 替换为目标网站的剧集URL格式
      const episodeUrl = `https://your-target-site.com/season-${seasonNum}/episode-${episodeNum}`;
      urls.push(episodeUrl);
    });
  });

  return urls;
}

2. 按序逐个处理链接(解决一次性打开所有标签页问题)

采用递归或异步循环逻辑,确保每个链接完成「打开-定时关闭」流程后,再触发下一个:

方案一:递归式顺序处理

// 顺序处理URL列表,间隔30-35秒执行一次
function processUrlsInOrder(urls) {
  let currentIndex = 0;

  function handleNextUrl() {
    if (currentIndex >= urls.length) return;

    const targetUrl = urls[currentIndex];
    currentIndex++;

    // 打开新标签页
    const newTab = window.open(targetUrl);

    // 生成30-35秒的随机延迟
    const randomDelay = Math.floor(Math.random() * 5000) + 30000;

    // 定时关闭标签页,之后启动下一个任务
    setTimeout(() => {
      if (newTab && !newTab.closed) newTab.close();
      setTimeout(handleNextUrl, randomDelay);
    }, randomDelay);
  }

  // 启动第一个任务
  handleNextUrl();
}

方案二:异步函数式处理(更直观)

// 通用延迟函数
function wait(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

// 异步顺序处理每个URL
async function processUrlsAsync(urls) {
  for (const url of urls) {
    const newTab = window.open(url);
    const randomDelay = Math.floor(Math.random() * 5000) + 30000;

    // 等待指定时间后关闭标签页
    await wait(randomDelay);
    if (newTab && !newTab.closed) newTab.close();
  }
}

3. 整合启动脚本

// 主入口函数
function startAutoPlay() {
  const allEpisodeUrls = getEpisodeUrls();
  
  if (allEpisodeUrls.length === 0) {
    console.log('未检测到任何剧集链接');
    return;
  }

  // 选择一种处理方式执行
  processUrlsInOrder(allEpisodeUrls);
  // 或 processUrlsAsync(allEpisodeUrls);
}

// 启动自动流程
startAutoPlay();

关键修正说明

  • 移除手动参数:通过DOM查询自动获取季数、集数,适配页面结构变化
  • 避免批量触发:用递归/异步循环替代一次性遍历,确保每个任务按序执行
  • 随机化延迟:生成30-35秒的随机等待时间,模拟人工操作节奏

内容的提问来源于stack exchange,提问作者kfir ben shimon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:45:58