您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add_iframe WaitingElement and more
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.org/scripts/522187/1532433/Kquery.js
// ==UserScript== // @name Kquery // @version 2025.02.06 // @description Add_iframe WaitingElement and more // @author You // @grant none // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_download // @require https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.5.1.min.js // ==/UserScript== /** * 添加一个iframe的类 * @class * @example const mi = new My_iframe(); mi.Add_iframe(url) .then(iframe=>{ const id = mi.GetDocument(); const img = $(id).find("img") }); */ function My_iframe(){ let iframe = null; this.Add_iframe = async(url)=>{ return new Promise((resolve,reject)=>{ // 创建一个iframe元素 iframe = document.createElement('iframe'); // 设置iframe的宽度和高度 iframe.width = '1px'; iframe.height = '1px'; // 设置iframe的src属性,指向你想要打开的URL iframe.src = url; // 请替换为你想要加载的URL // 将iframe添加到页面的body中 document.body.appendChild(iframe); // 等待iframe加载完成后再操作它 iframe.onload = function() { resolve(iframe); }; iframe.onerror = function(){ $(iframe).remove(); reject(url); } }) } this.GetDocument = ()=>{ if(!iframe){return false;} return iframe.contentWindow.document; } } /** * 等待一个元素加载完毕的方法 * @param {function():JQuery} GetEle -获取元素的方法 * @example const GetEle = ()=>$("img"); WaitingElement(GetEle) .then(tag=>{ }) */ async function WaitingElement(GetEle){ return new Promise(resolve=>{ let ele = GetEle(); if(ele.length>0){resolve(ele);}else{ let check = setInterval(()=>{ let ele = GetEle(); if(ele.length>0){ resolve(ele); clearInterval(check); } },100) } }) } /** * 在网页底部出现调试的方法 * @param {string} mess -要显示的信息 * @param {JQuery} item -要显示在什么元素上(可选) * @example ConsoleWrite("error"); */ function ConsoleWrite(mess,item){ if(item.length>0){item.text(mess);return item;} let div = $(".console"); if(div.length==0){ div = ` <div class="console"></div> <style> .console{ position:fixed; width:100%; background:black; color:white; bottom:0; } </style> ` $('body').append(div); div = $(".console"); div.on('touchstart',function(){$(this).hide()}); } div.text(mess); return div; } /** * 添加按键控制网页 * @example const kc = new KeyControler(); kc.AddEvent({ upItem:$("up"); downItem:$("down"); leftItem:$("left"); rightItem:$("right"); closew:$("close"); }) kc.RemoveEvent(); */ function KeyControler() { let Events = []; this.downItem = $('<a></a>').click(function () { var currentScroll = document.documentElement.scrollTop; var scrollDistance = $(window).height() / 2; console.log(currentScroll); window.scrollTo(0, currentScroll + scrollDistance); }); this.upItem = $('<a></a>').click(function () { var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; var scrollDistance = window.innerHeight / 2; window.scrollTo(0, currentScroll - scrollDistance); }); this.Event = (args, event) => { if (!args.upItem) { args.upItem = this.upItem; } if (!args.downItem) { args.downItem = this.downItem; } switch (event.key) { case 'ArrowLeft': if (args.leftItem && args.leftItem.length > 0) { args.leftItem[0].click(); console.log('Left arrow key pressed'); } break; case 'ArrowRight': if (args.rightItem && args.rightItem.length > 0) { args.rightItem[0].click(); console.log('Right arrow key pressed'); } break; case 'ArrowUp': if (args.upItem && args.upItem.length > 0) { args.upItem[0].click(); console.log('Up arrow key pressed'); } break; case 'ArrowDown': if (args.downItem && args.downItem.length > 0) { args.downItem[0].click(); console.log('Down arrow key pressed'); } break; case '0': if (typeof closew !== 'undefined' && args.closew) { window.close(); console.log('Window closed'); } break; default: break; } }; this.AddEvent = (args) => { const eventHandler = (event) => { this.Event(args, event); }; document.addEventListener('keydown', eventHandler); Events.push(eventHandler); }; this.RemoveEvent = () => { Events.forEach(handler => { document.removeEventListener("keydown", handler); }); Events = []; }; }