• 浏览器定时执行会有20ms以内的延迟

  • 主要实现定时点击按钮提交功能

JavaScript
const time_string = "11:39:00";  // 在这里设置时间

const btn_next = document.querySelector("#guestNextBtn");
const btn_proceed_id = "process-special-issue-guest-editor";
let timer; // 将 timer 定义在全局范围

// 检查proceed 并点击
function checkProceed() {
    console.log("开始查找Proceed " + new Date().toISOString());
    const element = document.getElementById(btn_proceed_id);
    if (element && element.style.display !== 'none') {
        clearInterval(timer);
        console.log("找到Proceed! " + new Date().toISOString());
        element.click();
        console.log("Proceed点击完成, done. " + new Date().toISOString());
    } else {
        console.log("未找到Proceed,继续查找... " + new Date().toISOString());
    }
}

btn_next.addEventListener('click', handleClick);
// 按钮被点击事件
function handleClick() {
    console.log("Next按钮 clicked... " + new Date().toISOString());
    console.log("开始循环查找目标元素... " + new Date().toISOString());
    const intervalTime = 50; // 间隔时间(毫秒)
    timer = setInterval(checkProceed, intervalTime);
}

// 定义点击按钮的函数
function clickNext() {
    console.log("开始查找Next " + new Date().toISOString());
    if (btn_next) {
        var time = new Date();
        console.log("找到Next按钮... " + new Date().toISOString());
        btn_next.click();
    }
}

// 处理时间
const time_array = time_string.split(":");
const target_time = new Date();
target_time.setHours(time_array[0], 10); // 时
target_time.setMinutes(time_array[1], 10); // 分
target_time.setSeconds(time_array[2], 10); // 秒
target_time.setMilliseconds(0); //ms

console.log("你设置的目标时间为: " + target_time.toLocaleString())

const current_time = new Date();
let timeout = target_time.getTime() - new Date();

// 延时执行点击按钮的函数
setTimeout(clickNext, timeout);