// ==UserScript== // @name 网页自定义倒计时 // @namespace https://greasyfork.org/zh-CN/scripts/457839-%E7%BD%91%E9%A1%B5%E8%87%AA%E5%AE%9A%E4%B9%89%E5%80%92%E8%AE%A1%E6%97%B6 // @version 1.4.1 // @description 网页自定义倒计时-蚩尤后裔 // @author 蚩尤后裔 // @homepage https://greasyfork.org/zh-CN/scripts/457839-%E7%BD%91%E9%A1%B5%E8%87%AA%E5%AE%9A%E4%B9%89%E5%80%92%E8%AE%A1%E6%97%B6 // @match http*://*/* // @require http://libs.baidu.com/jquery/2.0.0/jquery.min.js // @require https://cdn.bootcdn.net/ajax/libs/artDialog/7.0.0/dialog.js // @grant GM_log // @grant GM_registerMenuCommand // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @license MIT // @downloadURL none // ==/UserScript== // 将本内容直接复制粘贴到油猴中即可使用. (function () { 'use strict'; // 目标日期(yyyy,mth,dd,hh,mm,ss),月份从0开始[0,11],手动修改为实际日期即可 let targetDate = new Date(2023, 0, 14, 8, 0, 0); let tipPrefix = '离春节回家还有'; // 缓存目标日期的key const cacheKeyNameForDateTime = "wmx_targetDate"; // 缓存倒计时名称的key const cacheKeyNameForName = "wmx_targetName"; /** * 向原始页面添加倒计时元素 * * @param align_items :对齐方式 * * align-items: flex-start; 上对齐 * * align-items: center; 中对齐 * * align-items: flex-end; 下对齐 */ function appendCountDownEle(align_items) { let contDownJQ = $(`
`); contDownJQ.css({'position': 'fixed', 'top': 0, 'bottom': 0, 'left': 0, 'right': 0, 'display': 'flex'}); contDownJQ.css({'justify-content': 'center', 'align-items': align_items}); contDownJQ.css({'color': 'rgba(252,85,49, 0.5)', 'font-size': '5vw'}); contDownJQ.css({'pointer-events': 'none', 'z-index': '9999'}); // $('body').append(contDownJQ); $("body").each(function (index) { $(this).append(contDownJQ); }); } /** * 开始倒计时,每隔1秒刷新一下 */ function countDown() { // 如果缓存中存在,则继续保持原来设置的值。 if(GM_getValue(cacheKeyNameForDateTime)) { targetDate.setTime(GM_getValue(cacheKeyNameForDateTime)); } if(GM_getValue(cacheKeyNameForName)) { tipPrefix = GM_getValue(cacheKeyNameForName) } setInterval(() => { // 获取当前时间与目标时间的相差的秒数 let diff = parseInt((targetDate - Date.now()) / 1000); let hour = parseInt(diff / 3600); let min = parseInt((diff / 60) % 60); let sec = parseInt(diff % 60); let day = 0; if (hour > 24) { day = parseInt(hour / 24); hour = hour % 24; } $("#page-countdown").text(`${tipPrefix}:${day}天${hour}小时${min}分${sec}秒`); // document.querySelector('#page-countdown').innerHTML = `离春节回家还有:${day}天${hour}小时${min}分${sec}秒`; }, 1000); } /** * 控制某个元素不断的透明度降为0,然后透明度又升为1 * @param jQueryObj :待操作的 Jquery对象 * @param speed :速度 * @param opacity :透明度 * @param isShow :1表示显示,0表示隐藏 */ function hFlout(jQueryObj, speed, opacity, isShow) { jQueryObj.fadeTo(speed, opacity, function () { /** 当本次为隐藏时,下次应该为显示*/ if (isShow == 0) { isShow = 1; opacity = 1; } else { /** 当本次为显示时,下次应该为隐藏*/ isShow = 0; opacity = 0; } /**方法回调,循环动画*/ hFlout(jQueryObj, speed, opacity, isShow); }); } /** * 自定义设置菜单功能 */ function customSetting() { // 如果已经弹出了,则直接跳过,不再重复弹出 if($("#wmx_dialog_div").length > 0 ){ return; } let contentHtml = "倒计时名称:\n" + "
目标日期:
\n" + "