您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds FloatingWindow
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/477480/1265097/FloatingWindow.js
- // ==UserScript==
- // @name FloatingWindow
- // @version 1.0
- // @grant GM_addStyle
- // @grant GM_getValue
- // @grant GM_setValue
- // @description Adds FloatingWindow
- // ==/UserScript==
- GM_addStyle(`
- .floatingWindowContainer {
- width:200px;
- position:fixed;
- opacity:0.5;
- }
- .floatingWindowTitleBar {
- background-color:#fff;
- font-weight:bold;
- text-align:center;
- cursor:pointer;
- }
- .floatingWindowContainer.active {
- opacity:1;
- }
- `);
- class FloatingWindow {
- constructor(title) {
- this.container = document.createElement("div");
- this.container.className = "floatingWindowContainer";
- this.container.id = title.replaceAll(/\W+/g,"_");
- this.windowPosition = GM_getValue(`${this.container.id}_position`,{x:window.innerWidth*0.8,y:100});
- this.container.style.left = `${this.windowPosition.x}px`;
- this.container.style.top = `${this.windowPosition.y}px`;
- this.titleBar = document.createElement("div");
- this.titleBar.className = "floatingWindowTitleBar";
- this.titleBar.appendChild(document.createTextNode(title));
- this.titleBar.addEventListener("pointerdown",(e)=>{this.pointerDownHandler(e);});
- this.titleBar.addEventListener("pointermove",(e)=>{this.pointerMoveHandler(e);});
- this.titleBar.addEventListener("pointerleave",(e)=>{this.pointerMoveHandler(e);});
- this.titleBar.addEventListener("pointerout",(e)=>{this.pointerMoveHandler(e);});
- this.titleBar.addEventListener("pointerup",(e)=>{this.pointerUpHandler(e);});
- this.container.appendChild(this.titleBar);
- this.body = document.createElement("div");
- this.body.className = "floatingWindowBody";
- this.windowOpen = GM_getValue(`${this.container.id}_open`,true);
- if (this.windowOpen) this.container.classList.add("active");
- this.body.style.display = this.windowOpen ? "block" : "none";
- this.container.appendChild(this.body);
- document.body.appendChild(this.container);
- this.pointerValues = {
- dragging:false,
- newPosition:null,
- positionOffset:null
- };
- }
- toggleWindow() {
- this.windowOpen = !this.windowOpen;
- this.container.classList.toggle("active");
- GM_setValue(`${this.container.id}_open`,this.windowOpen);
- this.body.style.display = this.windowOpen ? "block" : "none";
- }
- pointerDownHandler(e) {
- e.preventDefault();
- this.pointerValues.positionOffset = {
- x:e.clientX - this.windowPosition.x,
- y:e.clientY - this.windowPosition.y
- };
- }
- pointerMoveHandler(e) {
- if (this.pointerValues.positionOffset) {
- e.preventDefault();
- this.pointerValues.newPosition = {
- x:e.clientX - this.pointerValues.positionOffset.x,
- y:e.clientY - this.pointerValues.positionOffset.y
- };
- if (!this.pointerValues.dragging) {
- if (Math.abs(this.pointerValues.newPosition.x-this.windowPosition.x) > 10 || Math.abs(this.pointerValues.newPosition.y-this.windowPosition.y) > 10) this.pointerValues.dragging = true;
- }
- if (this.pointerValues.dragging) {
- this.container.style.left = `${this.pointerValues.newPosition.x}px`;
- this.container.style.top = `${this.pointerValues.newPosition.y}px`;
- }
- }
- }
- pointerUpHandler(e) {
- e.preventDefault();
- if (this.pointerValues.dragging) {
- this.pointerValues.newPosition = {
- x:e.clientX - this.pointerValues.positionOffset.x,
- y:e.clientY - this.pointerValues.positionOffset.y
- };
- this.container.style.left = `${this.pointerValues.newPosition.x}px`;
- this.container.style.top = `${this.pointerValues.newPosition.y}px`;
- this.windowPosition = this.pointerValues.newPosition;
- GM_setValue(`${this.container.id}_position`,this.windowPosition);
- this.pointerValues.dragging = false;
- } else {
- this.toggleWindow();
- }
- this.pointerValues.positionOffset = this.pointerValues.newPosition = null;
- }
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址