// ==UserScript== // @name Yandex视频横屏插件 // @name:en Yandex Video Player Horizontal Screen Plug-in // @description 移动端Yandex浏览器看视频全屏时强制为横屏观看(安卓已经过测试运行,ios并未测试) // @description:en Yandex browser is set to play horizontally when viewing full-screen video. This is for Android, and IOS is not tested. // @version 1.2.1 // @author Xavier // @namespace https://greasyfork.org/zh-CN/users/128493 // @match *://*/* // @grant none // @run-at document-end // @note 功能说明:1.全屏下强制为横屏观看,支持重力感应切换方向(需要设备支持)。2.添加双击全屏功能。一些网站全屏按钮无法使视频进入全屏模式(例如m.bilibili.com),新增在视频播放状态下,双击全屏(支持双击退出全屏)。该功能需要关闭yandex浏览器的"忽略网站的禁止字体缩放请求"功能,不关闭双击会缩放网页。3.竖屏模式。有些视频更适宜在竖屏状态下观看,新增摇一摇切换竖屏,再次摇一摇换回横屏(需要设备支持)。 // @downloadURL none // ==/UserScript== (function() { 'use strict'; var oriHway="landscape-primary",oriHgamma=0,oriHbeta=0; var isLock=true; function orientationHandler(event) { oriHgamma=Math.round(event.gamma); oriHbeta=Math.abs(Math.round(event.beta)); if((oriHbeta<35 && Math.abs(oriHgamma)>30) || (oriHbeta>145 && Math.abs(oriHgamma)>30)){ oriHway=((oriHgamma>30 && oriHbeta<35) || (oriHgamma<-30 && oriHbeta>145)) ? "landscape-secondary" : "landscape-primary"; } if(isLock){screen.orientation.lock(oriHway);} } var SHAKE_THRESHOLD = 18000;//摇一摇灵敏度,越小越灵敏 var last_update = 0,diffTime=0,speed=0; var x=0, y=0, z=0, last_x = 0, last_y = 0, last_z = 0; var acceleration=null,curTime=null; function deviceMotionHandler(eventData) { acceleration =eventData.accelerationIncludingGravity; curTime = new Date().getTime(); if ((curTime-last_update)> 10) { diffTime = curTime -last_update; last_update = curTime; x = acceleration.x; y = acceleration.y; z = acceleration.z; speed = Math.abs(x +y + z - last_x - last_y - last_z) / diffTime * 10000; if (speed > SHAKE_THRESHOLD) { if(isLock){ screen.orientation.lock("portrait-primary"); window.removeEventListener('devicemotion',deviceMotionHandler,false); isLock=false; } else{ screen.orientation.lock(oriHway); window.removeEventListener('devicemotion',deviceMotionHandler,false); isLock=true; } setTimeout(window.addEventListener('devicemotion',deviceMotionHandler,false),1000); } last_x = x; last_y = y; last_z = z; } } function dblfull(){ if(videoplay!=null){ if(document.webkitFullscreenElement){videoplay.webkitExitFullscreen();} else{videoplay.webkitRequestFullScreen();} } } var videoEle=document.getElementsByTagName("video"); var videoplay=null,vi=0,vClick=0; function setVideo(e){videoplay=this;} function getVideoPlay() { if(videoEle.length>0){ for(vi=0;vi