Tampermonkey®油猴脚本实践——自动填工时

// ==UserScript==
// @name         自动填工时
// @namespace    http://tampermonkey.net/
// @version      2024-07-24
// @description  try to take over the world!
// @author       kai.shi
// @match        https://e-cology.beyondsoft.com/spa/workflow/static4form/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=beyondsoft.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    console.log('加载油猴脚本');
    // 模拟输入事件的函数
    function simulateInput(inputElement, value) {
        const focusEvent = new Event('focus');
        const inputEvent = new Event('input', { bubbles: true });
        const changeEvent = new Event('change', { bubbles: true });
        const blurEvent = new Event('blur');

        // 模拟获得焦点
        inputElement.dispatchEvent(focusEvent);

        // 设置输入框的值
        inputElement.value = value;

        // 模拟输入操作
        inputElement.dispatchEvent(inputEvent);

        // 模拟值改变
        inputElement.dispatchEvent(changeEvent);

        // 模拟失去焦点
        inputElement.dispatchEvent(blurEvent);
    }

    // 获取指定按钮元素
    const buttonElement = document.querySelector('#addbutton0');


    // 函数:填充所有非只读的输入框
    function fillInputsWithValue(value) {
        const inputs = document.querySelectorAll('input[type="text"].wf-input-2.wf-input-detail:not([readonly])');
        inputs.forEach(input => {
            simulateInput(input, value);
        });
    }



    // 等待直到按钮元素在DOM中,然后点击
    function clickWhenInDOM(elementSelector) {
        var interval = setInterval(function() {
            var element = document.querySelector(elementSelector);
            if (element && element.offsetParent !== null) { // 检查元素是否在DOM中
                element.click();
                clearInterval(interval);
            }
        }, 4000); // 每4秒检查一次

        // 使用 setInterval 定期检查非只读输入框的数量
        const intervalId = setInterval(() => {
            const inputs = document.querySelectorAll('input[type="text"].wf-input-2.wf-input-detail:not([readonly])');

            // 当非只读输入框数量大于 10 时,执行填充操作并清除定时器
            if (inputs.length > 10) {
                fillInputsWithValue('8');
                clearInterval(intervalId); // 清除定时器
            }
        }, 5000); // 每5秒检查一次
    }

    // 调用函数并传入按钮的选择器(假设选择器为 'button')
    clickWhenInDOM("#addbutton0");




})();


Tampermonkey®油猴脚本实践——自动填工时
https://shikai.info/archives/l2016TKO
作者
石 凯
发布于
2024年07月25日
许可协议