当前位置 博文首页 > 大话家的博客:上班防摸鱼插件(知乎页面)
最近突发奇想,写了一个js插件,用来防止上班摸鱼,插件仅知乎页面有效,别做的太绝。。。
启动该插件后,打开知乎页面,标题会改成 “摸鱼中。。。” ,背景被替换成咸鱼。每隔一分钟,背景就会变的透明一下。
10分钟后,页面提示同时发送钉钉机器人报警。20分钟后,页面报警同时发送机器人报警并主动关闭知乎页面。同时2小时内禁止再次访问知乎页面。效果和代码如下。
// ==UserScript==
// @name 上班防摸鱼插件
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 上班防摸鱼,自动关闭知乎页面,发送钉钉机器人报警。
// @author 大话家
// @include *://*.zhihu.com/*
// @require https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js
// @require https://res.layui.com/layui/release/layer/dist/layer.js?v=3111
// @require http://pv.sohu.com/cityjson?ie=utf-8
// ==/UserScript==
(function() {
'use strict';
// 背景透明值
var opacityNum = 1.0;
// 页面打开的时间
var startTime = dateFormat("YYYY年MM月dd日 HH时mm分ss秒", new Date());
// 主机IP
var ip = returnCitySN.cip;
// 员工唯一标识
var userId = 360945;
var flag = localStorage.getItem("flag");
if(flag == "" || flag == undefined){
flag = 0;
localStorage.setItem("flag",1);
}
if(flag == 2){
var banTime = localStorage.getItem("banTime");
// 2小时后可解封
if(Date.now() - banTime > 2*60*60*1000){
localStorage.setItem("flag",0);
}else{
// 关闭页面
window.opener = null;
window.open('','_self');
window.close();
}
}
// 设置摸鱼壁纸
document.body.style.background = "url('https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1272729702,676992708&fm=26&gp=0.jpg')";
// 设置摸鱼标题
setTimeout(function(){
document.title = '摸鱼中。。。';
}, 3*1000);
// 摸鱼过程中,每一分钟背景逐渐透明
setInterval(function(){
$("body").css({ opacity: opacityNum });
opacityNum = opacityNum -0.04;
}, 60*1000);
// 10分钟内,页面警告;20分钟内强制退出!
setInterval(function(){
if(flag == 0){
layer.msg("你已摸鱼10分钟,请注意用时!\n上班要专心!", { icon: 7, time: 10000 });
localStorage.setItem("flag", 1);
var dingMsg1 = "提示:"+userId+"("+ip+")用户从"+startTime+"开始摸鱼10分钟,上班要认真!";
$.ajax({
url:'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx',
type:"POST",
async: false,
beforeSend:function (xhr){
xhr.setRequestHeader('Content-Type', 'application/json,application/x-www-form-urlencoded');
},
data:JSON.stringify({"msgtype": "text","text": {"content": dingMsg1}}),
success:function (res){
console.log(res);
},
error:function (err){
console.log(err);
}
});
// 强制退出
}else{
layer.msg("你已摸鱼20分钟,您将禁止访问知乎页面2小时!", { icon: 7, time: 10000 });
localStorage.setItem("flag", 2);
var dingMsg2 = "提示:"+userId+"("+ip+")用户从"+startTime+"开始摸鱼20分钟!插件将屏蔽该用户访问知乎页面2小时。";
$.ajax({
url:'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxx',
type:"POST",
async: false,
beforeSend:function (xhr){
xhr.setRequestHeader('Content-Type', 'application/json,application/x-www-form-urlencoded');
},
data:JSON.stringify({"msgtype": "text","text": {"content": dingMsg2}}),
success:function (res){
console.log(res);
},
error:function (err){
console.log(err);
}
});
localStorage.setItem("banTime", Date.now());
setTimeout(function(){
window.opener = null;
window.open('','_self');
window.close();
}, 12*1000);
}
}, 10*60*1000);
// 获取格式化时间
function dateFormat(fmt, date) {
let ret;
const opt = {
"Y+": date.getFullYear().toString(), // 年
"M+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"m+": date.getMinutes().toString(), // 分
"s+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
};
};
return fmt;
}
})();
?