您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
// ==UserScript== // @name 打卡提醒 // @namespace http://tampermonkey.net/ // @version 0.2 // @description try to take over the world! // @author cA7dEm0n // @include * // @match * // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @require http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.2/moment.min.js // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js // ==/UserScript== (function () { 'use strict'; const DEFAULT_WORK_START_TIME = "09:00"; const DEFAULT_WORK_END_TIME = "18:30"; const REFRESH_MS_TIME = 3000; const TIME_FORMAT = "H:m"; let today = moment().format('L'); const WORK_SIGN_KEY = `workSign_${today}`; const WORK_SIGN_TIME_KEY = `workSignTime_${today}`; const OFF_WORK_SIGN_KEY = `offWorkSign_${today}`; const OFF_WORK_SIGN_TIME_KEY = `offWorkSignTime_${today}`; const DEFAULT_WORK_TIME_MINUTE = Number(moment(DEFAULT_WORK_END_TIME, TIME_FORMAT).diff(moment(DEFAULT_WORK_START_TIME, TIME_FORMAT), 'minute')) if (stringInUrl("help!!!")) { console.log("setWorkTime 手动设置上班打卡时间,例: http://www.baidu.com/?setWorkTime=09:40") console.log("setWorkStatus 手动设置上班打卡状态,例: http://www.baidu.com/?setWorkStatus=true") console.log("setOffWorkTime 手动设置下班打卡时间,例: http://www.baidu.com/?setOffWorkTime=18:40") console.log("setOffWorkStatus 手动设置下班打卡状态,例: http://www.baidu.com/?setOffWorkStatus=true") alert("查看控制台") } if (getParameterByName("setWorkTime")) { let workSignTime = getParameterByName("setWorkTime") GM_setValue(WORK_SIGN_TIME_KEY, workSignTime) let endTime = moment(workSignTime, TIME_FORMAT).add(DEFAULT_WORK_TIME_MINUTE, 'm').format(TIME_FORMAT) GM_setValue(OFF_WORK_SIGN_TIME_KEY, endTime) alert(`上班打卡提示时间修改为: ${workSignTime}\n下班打卡提示时间修改为: ${endTime}`) } if (getParameterByName("setOffWorkTime")) { let offWorkSignTime = getParameterByName("setOffWorkTime") GM_setValue(OFF_WORK_SIGN_TIME_KEY, offWorkSignTime) alert(`下班打卡时间改为\n${offWorkSignTime}`) }; if (getParameterByName("setOffWorkStatus")) { let offWorkSignStatus = getParameterByName("setOffWorkStatus") let status = offWorkSignStatus == "true" ? true : false GM_setValue(OFF_WORK_SIGN_KEY, status) alert(`修改下班打卡状态为[${status}]`) } if (getParameterByName("setWorkStatus")) { let workSignStatus = getParameterByName("setWorkStatus") let status = workSignStatus == "true" ? true : false GM_setValue(WORK_SIGN_KEY, status) alert(`修改上班打卡状态为[${status}]`) } function stringInUrl(name, url) { if (!url) url = window.location.href; return url.indexOf(name) > 0 }; function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); } if (GM_getValue(OFF_WORK_SIGN_KEY, false)) { throw new Error("下班已经打卡,进程结束."); } let workSignTime = GM_getValue(WORK_SIGN_TIME_KEY, DEFAULT_WORK_START_TIME); $("body").append(`<div class="pfys">上午打卡时间:${workSignTime}</div>`) GM_addStyle(" \ .pfys { \ span { display: block; }\ font-size: 8px;\ z-index:9999; \ opacity:0.5; \ width: 10px; \ line-height: 20px;\ height: 40px;\ position: fixed;\ word-wrap:break-word; \ word-break:break-all; \ right: 1px;\ top: 120px;\ text-align: center;\ -webkit-box-shadow: 1.2px 1.2px 1.2px #000;\ box-shadow: 1px 1px 1px hsla(0,0%,0%,.4);\ border-top-left-radius: 3px;\ border-bottom-left-radius: 3px;\ transition: all .8s ease 0s;\ overflow: hidden;\ }\ .pfys:hover {\ opacity:0.88; \ width: 200px;\ height: 120px;\ font-size: 16px;\ color: #333;\ background-color: #FAFAFE;\ line-height: 40px;\ }\ .pfys span { \ display:block; \ }" ) $(".pfys").hover(function () { let offWorkSignTime = GM_getValue(OFF_WORK_SIGN_TIME_KEY, DEFAULT_WORK_END_TIME); let timeDiff = offWorkSignTimeMomentObj().diff(moment(), 'minute'); $(".pfys").html(`<span>上午打卡时间:\t${workSignTime}</span><span> 下午打卡时间:\t${offWorkSignTime}</span><span>还有<b>${timeDiff}</b>分钟放学</span>`); }); function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); } function workSignTimeMomentObj() { let workSignTime = GM_getValue(WORK_SIGN_TIME_KEY, DEFAULT_WORK_START_TIME) return moment(workSignTime, TIME_FORMAT) } function offWorkSignTimeMomentObj() { let offWorkSignTime = GM_getValue(OFF_WORK_SIGN_TIME_KEY, DEFAULT_WORK_END_TIME) return moment(offWorkSignTime, TIME_FORMAT) } function isWork(timeObj) { return timeObj().unix() >= workSignTimeMomentObj().unix(); }; function isOffWork(timeObj) { return timeObj().unix() >= offWorkSignTimeMomentObj().unix(); } let intervarl = setInterval(main, REFRESH_MS_TIME) function main() { console.log(`[.] 打卡提醒插件正常运行, 当前[${REFRESH_MS_TIME}ms]检测一次`) let nowTime = moment; let workSign = GM_getValue(WORK_SIGN_KEY, false); if (isWork(nowTime) && !workSign) { if (confirm("打卡了吗?")) { GM_setValue(WORK_SIGN_KEY, true); GM_setValue(WORK_SIGN_TIME_KEY, nowTime().format(TIME_FORMAT)); let endTime = nowTime().add(DEFAULT_WORK_TIME_MINUTE, 'm').format(TIME_FORMAT) GM_setValue(OFF_WORK_SIGN_TIME_KEY, endTime); } } let offWorkSign = GM_getValue(OFF_WORK_SIGN_KEY, false); if (isOffWork(nowTime) && offWorkSign == false) { if (confirm("下班打卡了吗?")) { GM_setValue(OFF_WORK_SIGN_KEY, true); console.log(`下班打卡成功:${nowTime().format(TIME_FORMAT)}`); } else { console.log("打卡失败"); } } if (GM_getValue(OFF_WORK_SIGN_KEY, false) == true) { console.log("[!] 下班已打卡!!!!") clearInterval(intervarl); } } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址