您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Util function library
当前为
此脚本不应直接安装,它是供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/405927/819498/UtilLibrary.js
// ==UserScript== // @name UtilLibrary // @namespace [email protected] // @version 0.1.0 // @description Util function library // @author [email protected] // @match *://*/* // @grant GM_openInTab // ==/UserScript== const Util = (() => { // Start library const LOGGING_LEVELS = [ "INFO", "NOTE", "WARNING", "ERROR" ]; var MINIMUM_LOGGING_LEVEL = LOGGING_LEVELS.findIndex( (element) => (element == "NOTE") ); var LOG_MESSAGES_WITHOUT_LOGGING_LEVEL = true; /// /// Log a message. /// const Log = (...args) => { var loggingLevelIndex = LOGGING_LEVELS.findIndex( (element) => (element == args[0]) ); if (loggingLevelIndex != -1) { if (loggingLevelIndex < MINIMUM_LOGGING_LEVEL) { return; } //args = args.slice(1); } else if (!LOG_MESSAGES_WITHOUT_LOGGING_LEVEL) { // Don't log messages without a logging level return; } console.log.apply(null, [(new Date()).toISOString() + " TCAC:\n"].concat(args)); }; /// /// Query a selector until it isn't null. /// const WaitForSelector = (selector, maxWaitTime) => { var querySelector = null; querySelector = (resolve, maxWait, startTime) => { startTime = startTime || (new Date()).getMilliseconds(); var currentTime = (new Date()).getMilliseconds(); Log(startTime, startTime + maxWait, currentTime); if (currentTime >= (startTime + maxWait)) { resolve(null); return; } var element = document.querySelector(selector); if (element == null) { // Element not found, try again next frame setTimeout( () => querySelector(resolve, maxWait, startTime), 0 ); return; } // Element found, resolve resolve(element); }; maxWaitTime = maxWaitTime || 500; return new Promise( (resolve) => querySelector(resolve, maxWaitTime) ); }; /// /// Open a window with a given URL and delay (timeout). /// const OpenUrl = (url, openInBackground) => { if (!openInBackground) { openInBackground = false; } Log(urlsOpened, urlOpenLimit); if (urlsOpened >= urlOpenLimit) { return false; } Log("OpenUrl(" + url + ")"); ++urlsOpened; /*/ setTimeout( function () { window.open(url); }, 10 * urlsOpened ); /*/ GM_openInTab(url, openInBackground); //*/ return true; }; // End library });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址