NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name video-control-by-apolo-for-xiedaimala // @namespace Violentmonkey Scripts // @match *://xiedaimala.com/tasks/* // @grant none // @license MIT // @version 1.0.13 // ==/UserScript== // (function () { window.onload = function () { let video; function updateVideo() { // method1 getVideo through selector //// please customize selectorPattern before using // let selectorPattern = 'div.el-collapse-item.is-active video' // // let currentVideo = document.querySelector(selectorPattern) // method2 getVideo through filtering video.offsetHeight let videos = document.querySelectorAll('video') // console.log(videos) if (videos.length > 1) { videos = Array.from(videos) let currentVideo = videos.filter((currentElement) => currentElement.offsetHeight !== 0)[0] // force video preload currentVideo.preload = 'auto' video = currentVideo } else if (videos.length === 1) { video = videos[0] } else { console.log('找不到video') return undefined } } //specify functions function vidPlayPause() { if (video.paused) { video.play(); } else { video.pause(); } } function vidForward(step) { video.currentTime += step; } function vidBackward(step) { video.currentTime -= step; } function volumeDown() { if (video.volume >= 0.1) { video.volume -= 1 / 10; } } function volumeUp() { if (video.volume <= 0.9) { video.volume += 1 / 10; } } function speedUp() { video.playbackRate += 1 / 40 console.log(`current playback speed: ${video.playbackRate}`) } function speedDown() { if (video.playbackRate >= 0.5) video.playbackRate -= 1 / 40 console.log(`current playback speed: ${video.playbackRate}`) } function fullScreen() { if (document.webkitIsFullScreen) { video.webkitExitFullScreen(); } else { video.webkitRequestFullScreen(); } } //global eventListener window.addEventListener('keydown', function (e) { updateVideo() e.stopImmediatePropagation() let key = e.keyCode; // 检验 event.keyCode 的类型 //// console.log(key) //// console.log(typeof key) // 初始化步进的秒数 let defaultStep = 5 let currentStep; // 如果 shift 键触发, 那么步进/布退秒数翻倍 if (e.shiftKey === true) { currentStep = 2 * defaultStep } else { currentStep = defaultStep } if (video) { switch (key) { case 37: //arrowLeft vidBackward(currentStep); break; case 39: //arrowRight vidForward(currentStep); break; case 38: //arrowUp volumeUp(); break; case 40: volumeDown(); break; case 32: //Space key vidPlayPause(); break; case 70: fullScreen(); break; case 190: // . key speedUp(); break; case 188: // , key speedDown() break; case 87: let event = document.createEvent("Event"); event.initEvent("click", false, true); document.querySelector(' .bulletControl > input[value=网页全屏] ').dispatchEvent(event) break; } } }, true); } })()