您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
等待满足某种条件后执行,目前不支持嵌套调用
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/412875/1169596/WaitUntil.js
- // ==UserScript==
- // @name WaitUntil
- // @namespace http://bbs.91wc.net/?wait-until
- // @version 0.1.2
- // @description 等待满足某种条件后执行,目前不支持嵌套调用
- // @author Wilson
- // ==/UserScript==
- var WaitUntil = (function(g){
- g._WaitUntil = g._WaitUntil || {};
- g._WaitUntil.timer = g._WaitUntil.timer||{};
- g._WaitUntil.counter = g._WaitUntil.counter||{};
- g._WaitUntil.timesCounter = g._WaitUntil.timesCounter||{};
- var timer = g._WaitUntil.timer;
- var counter = g._WaitUntil.counter;
- var timesCounter = g._WaitUntil.timesCounter;
- var waitUntil=function(condfunc, callback, interval, trys, times){
- var getGuid = getGuid||function() {
- var d = new Date().getTime();
- var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
- var r = (d + Math.random()*16)%16 | 0;
- d = Math.floor(d/16);
- return (c=='x' ? r : (r&0x3|0x8)).toString(16);
- });
- return uuid;
- };
- var guid = guid || getGuid();
- timesCounter[guid] = times || 1;
- var isTimesInfinite = timesCounter[guid] === -1;
- var waiter = function(condfunc, callback, interval, trys, guid){
- interval = interval || 100;
- trys = trys || 300;
- counter[guid] = counter[guid] ? counter[guid]++ : 1;
- timesCounter[guid]--;
- if(counter[guid]>trys){
- if(timer[guid]) clearTimeout(timer[guid]);
- //callback('fail');
- return;
- }
- timer[guid] = setTimeout(function(){
- if(condfunc()){
- if(timer[guid]) clearTimeout(timer[guid]);
- callback('ok');
- if(isTimesInfinite || timesCounter[guid] > 0){
- waiter(condfunc, callback, interval, trys, guid);
- }
- } else {
- if(timer[guid]) clearTimeout(timer[guid]);
- waiter(condfunc, callback, interval, trys, guid);
- }
- }, interval);
- }
- waiter(condfunc, callback, interval, trys);
- }
- return waitUntil;
- })(this);
- //使用示例
- //WaitUntil(function(){return typeof jQuery !=="undefined" && $(".test").length>0}, function(){
- // alert($(".test").html());
- //});
- //其他参数
- //condfunc 满足条件的函数
- //callback 条件满足后执行的回调函数
- //interval 监听满足条件的时间间隔,单位毫秒,默认100
- //trys 尝试次数,超过这个数值就停止监听,默认为300(因默认间隔是100毫秒,所以默认停止监控时间为300*100毫秒,即30秒)
- //times 执行次数,默认执行1次