// ==UserScript== // @name FloatingPlayer // @namespace https://greasyfork.org/zh-CN/scripts/449323/ // @version 0.2 // @description FloatingPlayer!悬浮窗 // @author Ylanty // @license GPLv3 // @match http*://*/* // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAE7mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMi0wNy0yM1QyMTozMzo0MiswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjItMDctMjlUMTY6NTk6MjgrMDg6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjItMDctMjlUMTY6NTk6MjgrMDg6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmViNWUxNzAxLTIzNTYtYWI0NS1hNThhLWNjODA2NGRiZWQzYiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDplYjVlMTcwMS0yMzU2LWFiNDUtYTU4YS1jYzgwNjRkYmVkM2IiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjVlMTcwMS0yMzU2LWFiNDUtYTU4YS1jYzgwNjRkYmVkM2IiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmViNWUxNzAxLTIzNTYtYWI0NS1hNThhLWNjODA2NGRiZWQzYiIgc3RFdnQ6d2hlbj0iMjAyMi0wNy0yM1QyMTozMzo0MiswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoBFavEAAAJ5SURBVEiJtZZNSFRRGIYfwyKYTSudJlfa2pkCEWtRlqFtLjZabkqkP9oEZRH9oQiVuIiMAhnMZeCNfsYxSTOTCSa1UjIqghJ/R8tQR0ObmWq+Fnab6XIdnTFfOHD4zj3vc97DOffeBBFhJbXKqLj5DvnX3/Dg3STf2r30nfRwzaqixEUQkX9aer0ot95Lq+jUNiJ9O5xyML1eFP2caM0QMB0IG/8Khfu+gMj5TnHEAjEEaIZnO6TGpkr+aY/cmPKHQW6vDOY0yOGlgKICNqmSr9WynVLSNix92thMUKSsS+qsi0CiAvQrTK8X5VyHOHwRW+gZE2+uS44ulMbwFC2k3iJcTYM02Zs55B5lAGCLGcu9PByFaRTYjE5aLAn0z13slNqZYDhN52cZ290oxyLnxZRAn8Y1QKP9EUc8Y4wAZCZjvptHTZaZrL/3Jt4E+jllXVKnnbSpgEi2U0qWlUCfxtlPQ8UrqgHWrYGcFHbBAq+KeBUSQlr/R4jgfwPYVJTCNAoqMigF8M5CyxAtAInLMbaqKBtMWGqzqchIIgnAF4Qzz7kw+5O5ZQFsKsq+jew9YWW/6Y/LkxE+Xenm8oSfyd4iXHEBrCqKxYTFsZ3yzGTMAJN+qOzh5uNhWjVjTTEBtL0utVGsrbpliA+VPVROBfDpzRcFJK6aH7eqKOtNmGu2UZ5lxgIw4YdL3VQ/HaHdyHhJAHsqe7beZ21BKrmnbBSbVs/XmwZ5W9VD1XSQmWjmgPFNjnz3R2p8TuT4M7kaywfH8B7c/shDfa2hn9f2Zg64R3EvuupoW9RbhMumgi+Ab2cKOV+/M+4awPXiCy9jMdaUICv82/IbKqHswvE0TmsAAAAASUVORK5CYII= // @noframes // @downloadURL none // ==/UserScript== var run=1; (function() { 'use strict'; if(run>1) return; run++; var zindex=999999999; var maxrect=5; var maxrspeed=10; var findedVideoElement=false,touchedVideoElement=false,floatingFlag=false,isIframe=false,isRotate=false,isFloatingbtnContainDisplay=false; var rotate=0; var screenSize=1,screenSizeChange=0,screenPosition='default'; var videoratio={width:0,height:0}; var allElements={}; var containSize={width:0,height:0}; var cw,ch; var mouseoverbtn,showMsgT; var touchInfo={},mouseInfo={}; var floatingPlayerData = { display: {name: '背景黑色',colspan: 2}, time: {name: '时间',colspan: 4,nolistener:true}, videorect: {name: '🗔'}, videorect_001: {name: '-5%',value: -0.05}, videorectrange: {name: '滑动',colspan: 2,buttontype: 'range'}, videorect001: {name: '+5%',value: 0.05}, videorectshow: {name: '100%'}, volume: {name: '🔊'}, volume_010: {name: '-10%',value: -0.1}, volumerange: {name: '滑动',colspan: 2,buttontype: 'range'}, volume010: {name: '+10%',value: 0.1}, volumeshow: {name: '100%'}, speed: {name: '倍速'}, speed_001: {name: '-x0.1',value: -0.1}, speedrange: {name: '滑动',colspan: 2,buttontype: 'range'}, speed001: {name: '+x0.1',value: 0.1}, speedshow: {name: 'x1.0'}, progress: {name: '进度'}, progress_001: {name: '-1%',value: -0.01}, progressrange: {name: '滑动',colspan: 2,buttontype: 'range'}, progress001: {name: '+1%',value: 0.01}, progressshow: {name: '100%'}, videoratio34: {name: '3:4'}, videoratio43: {name: '4:3'}, videoratio916: {name: '9:16'}, videoratio169: {name: '16:9'}, videoratioauto: {name: '拉伸'}, videoratiosource: {name: '原比'}, positionlefttop: {name: '◰'}, rotate: {name: '↻',value: 90}, positioncenter: {name: '⧈',colspan: 2}, rotate_: {name: '↺',value: -90}, positionrighttop: {name: '◳'}, positionleftbottom: {name: '◱'}, rewind: {name: '⏮ 20s',value: -20}, play: {name: '⏵/⏸',colspan: 2}, fastwind: {name: '⏭ 20s',value: 20}, positionrightbottom: {name: '◲'} }; //showFloatingBtn(); var findVideoElementInterval = setInterval(function(){ findVideoElement(); if(findedVideoElement){ clearInterval(findVideoElementInterval); showFloatingBtn(); } }, 1000); function findVideoElement(){ //alert(document.querySelector('iframe').contentWindow.document.querySelectorAll('video')); if(document.querySelector('video')){ allElements.videoElement=document.querySelector('video'); if(allElements.videoElement.readyState >= 2 && allElements.videoElement.duration>=2){ allElements.floatElement=allElements.videoElement; allElements.floatElementContain=allElements.floatElement.parentElement; findedVideoElement=true; } }else if(document.querySelector('iframe').contentWindow.document.querySelector('video')){ allElements.videoElement=document.querySelector('iframe').contentWindow.document.querySelector('video'); if(allElements.videoElement.readyState >= 2 && allElements.videoElement.duration>=2){ allElements.floatElement=document.querySelector('iframe'); //allElements.floatElement=allElements.videoElement; allElements.floatElementContain=allElements.floatElement.parentElement; findedVideoElement=true; isIframe=true; } } } function showFloatingBtn(){ var btnCss=``; document.querySelector('head').insertAdjacentHTML('beforeend',btnCss); //☫↻ var floatingbtnstr='֎'; var floatingshowmsgstr='