// ==UserScript== // @name 手电筒 // @namespace http://tampermonkey.net/ // @version 1.0 // @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 falg = false; // 添加按钮 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.entrance(); return; }; // 追加 document.body.appendChild(Container); let main = { entrance(){ if (falg) { this.close(); falg = false; } else { this.open(); falg = true; } }, open(){ document.body.appendChild(document.createElement('style')) 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: 80 } 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') } }; })();