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

iOS端编写JS实现每日上班打卡遇阻,求解决方案

解决iPhone上JS实现自动打卡的问题

原代码存在的核心问题

  • 依赖未加载的jQuery:$是jQuery专属选择器,若运行环境(如Safari控制台、快捷指令)未引入jQuery,会直接抛出ReferenceError: $ is not defined错误。
  • 方法调用错误:jQuery对象没有onclick属性,原代码中glogin.onclick()属于误用,正确方式是用glogin.click()或转为DOM元素后调用glogin[0].click()。
  • 执行时机不对:代码在页面元素未完全渲染时就执行,导致找不到目标按钮。
  • 拼写与逻辑错误:completetion是拼写错误,正确应为completion,且无需将函数作为参数传入,直接执行函数即可。

可行解决方案

方案1:纯原生JS实现(兼容无jQuery环境)

用原生DOM API替代jQuery,适配iPhone绝大多数脚本运行场景:

// 等待页面完全加载后执行
document.addEventListener('DOMContentLoaded', () => {
    // 查找谷歌登录按钮
    const glogin = document.querySelector('.loginBtn.loginBtn--google');
    if (!glogin) {
        console.error('未找到谷歌登录按钮');
        return;
    }
    glogin.click();

    // 等待登录跳转完成(根据页面加载速度调整延迟,单位:毫秒)
    setTimeout(() => {
        const checkOut = document.querySelector('#checkOut');
        if (checkOut) {
            checkOut.click();
        } else {
            console.error('未找到打卡按钮');
        }
    }, 3000); // 可根据实际情况调整延迟时长
});

方案2:适配iPhone快捷指令环境

若在快捷指令中运行JS,需注意Web视图的加载特性,同时正确使用completion函数返回结果:

window.onload = () => {
    // 给页面基础加载留缓冲时间
    setTimeout(() => {
        const glogin = document.querySelector('.loginBtn.loginBtn--google');
        if (!glogin) {
            completion('未找到谷歌登录按钮');
            return;
        }
        glogin.click();

        // 等待登录后页面加载完成
        setTimeout(() => {
            const checkOut = document.querySelector('#checkOut');
            checkOut ? checkOut.click() && completion('打卡成功') : completion('未找到打卡按钮');
        }, 4000);
    }, 2000);
};

额外注意事项

  • 延迟时间需根据目标网站的实际加载速度调整,避免因页面未完全渲染导致按钮查找失败。
  • 若目标网站有反自动化机制(如人机验证、点击行为检测),这类简单JS点击可能会被拦截,无法实现自动打卡。
  • 在Safari中执行代码,可先开启「设置-Safari-高级-开发」选项,通过对应页面的控制台执行,或把代码保存为书签脚本(点击书签触发执行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:55:24