// ==UserScript== // @name Fullscreen Button // @name:zh-CN 全屏按钮 // @match *://*/* // @version 0.2 // @description A simple float button for entering fullscreen. // @description:zh-CN 一个简单的浮动按钮用于全屏显示网页。 // @noframes // @license CC0 // @namespace https://greasyfork.org/users/123506 // @downloadURL https://update.greasyfork.icu/scripts/474531/Fullscreen%20Button.user.js // @updateURL https://update.greasyfork.icu/scripts/474531/Fullscreen%20Button.meta.js // ==/UserScript== 'use strict'; // Check if the fullscreen button already exists var btn = document.getElementById("b0n"); // If it doesn't exist, create it if (!btn) { document.body.insertAdjacentHTML("afterbegin", '
'); btn = document.getElementById("b0n"); } var reF = document.documentElement.requestFullscreen || document.documentElement.webkitRequestFullscreen; var action = function () { reF.call(document.documentElement); } btn.onclick = action; // Variables for long press and touch events var longPressTimer; var isTouching = false; var touchOffsetX, touchOffsetY; // Add touch event listeners btn.addEventListener("touchstart", function (e) { isTouching = true; var touch = e.touches[0]; touchOffsetX = touch.clientX - btn.getBoundingClientRect().left; touchOffsetY = touch.clientY - btn.getBoundingClientRect().top; // Set a long press timer for 500 milliseconds longPressTimer = setTimeout(function () { btn.style.cursor = "grabbing"; }, 500); }); btn.addEventListener("touchmove", function (e) { if (!isTouching) return; var touch = e.touches[0]; var x = touch.clientX - touchOffsetX; var y = touch.clientY - touchOffsetY; btn.style.left = x + "px"; btn.style.top = y + "px"; e.preventDefault(); // Prevent page scrolling while dragging }); btn.addEventListener("touchend", function () { isTouching = false; clearTimeout(longPressTimer); btn.style.cursor = "grab"; });