Greasy Fork

QuHouLibary

QuHou's Libary

目前为 2024-11-14 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.cloud/scripts/517325/1483913/QuHouLibary.js

// ==UserScript==
// @name         QuHouLibary
// @namespace    http://quhou.net/
// @version      0.1
// @description  QuHou's Libary
// @match        http://*/*
// @match        https://*/*
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // 创建一个对象来存储我们的工具函数
    const qq = {
        /**
     * @param {string} selector
     * @return {HTMLElement}
     * */
        findDom(selector) {
            const startTime = new Date().getTime()
            return new Promise((resolve, reject) => {
                const id = setInterval(() => {
                    const dom = document.querySelector(selector)
                    if (dom) {
                        clearInterval(id)
                        resolve(dom)
                    } else if (new Date().getTime() - startTime > 1000 * 30) {
                        clearInterval(id)
                        reject(`无法找到此dom元素: ${selector}`)
                    }
                }, 200)
                })
        },
        /**
     * @param {string} selector
     * @return {HTMLElement[]}
     * */
        findALLDom(selector) {
            const startTime = new Date().getTime()
            return new Promise((resolve, reject) => {
                const id = setInterval(() => {
                    const doms = [...new Set(document.querySelectorAll(selector))]
                    if (doms.length > 0) {
                        clearInterval(id)
                        resolve(doms)
                    } else if (new Date().getTime() - startTime > 1000 * 30) {
                        clearInterval(id)
                        reject(`无法找到此dom元素: ${selector}`)
                    }
                }, 200)
                }).catch(err => console.log(err))
        },
        randomNum(start, end) {
            return Math.floor(Math.random() * (end - start + 1)) + start
        },
        isNumber(v) {
            return typeof v === 'number' && isFinite(v);
        }
    }
    qq.log = true
    window.qq = qq;
    console.log(qq)
    qq.loag && console.log("qq tool is loaded")
})();