// ==UserScript==
// @name 手电筒
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 模拟手电筒
// @author 伟大大
// @match https://learnku.com/articles/72938
// @icon https://s1.ax1x.com/2022/11/07/xj7TVf.png
// @grant none
// @license MIT
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
// 添加按钮
let Container = document.createElement('div');
Container.id = "sp-ac-container";
Container.style.position="fixed"
Container.style.top="40px"
Container.style['z-index']="999999"
Container.innerHTML =``
//绑定按键点击功能
Container.onclick = function (){
main.open();
return;
};
// 追加
document.body.appendChild(Container);
// 添加关闭按钮
let Container1 = document.createElement('div');
Container1.id = "sp-ac-container";
Container1.style.position="fixed"
Container1.style.top="40px"
Container1.style['z-index']="999999"
Container1.innerHTML =``
//绑定按键点击功能
Container1.onclick = function (){
main.close();
return;
};
// 追加
document.body.appendChild(Container1);
let main = {
open(){
document.querySelector('style').append(`canvas {position: fixed;left:0;top: 0;z-index: 9999;pointer-events: none;}`)
document.body.appendChild(document.createElement('canvas'))
const cvs = document.querySelector('canvas')
const ctx = cvs.getContext('2d')
cvs.width = document.documentElement.clientWidth
cvs.height = document.documentElement.clientHeight
const p = {
x: 0,
y: 0,
r: 50
}
document.onmousemove = e => {
p.x = e.clientX
p.y = e.clientY
render()
}
const render = () => {
ctx.beginPath()
ctx.clearRect(0, 0, cvs.width, cvs.height)
var radial = ctx.createRadialGradient(p.x,p.y,p.r,p.x,p.y,p.r * 3);
radial.addColorStop(0,'rgba(255, 255, 255, 0)');
radial.addColorStop(1,'rgba(0, 0, 0, 0.5)');
ctx.fillStyle = radial;
ctx.fillRect(0,0,cvs.width, cvs.height);
}
render()
window.onresize = () => {
cvs.width = document.documentElement.clientWidth
cvs.height = document.documentElement.clientHeight
render()
}
},
close(){
document.querySelector('canvas').remove()
document.querySelector('style').remove('canvas')
}
};
})();