使用键盘控制视频播放
// ==UserScript== // @name 视频助手 // @namespace https://github.com/Aoerz/UserScripts // @version 0.2 // @description 使用键盘控制视频播放 // @author Aoerz // @include https://www.icourse163.org/* // @include https://www.xuetangx.com/* // @include https://www.coursera.org/* // @include https://www.bilibili.com/* // @include https://v.qq.com/* // @include https://www.iqiyi.com/* // @include https://v.youku.com/* // @grant none // ==/UserScript== (function() { "use strict"; var skipTime = 10; var skipVolume = 0.1; var volumeTemp; function xuetangxAssistant() { document.onkeydown = function(e) { var evt = e || window.event; var v = document.querySelector("video"); event.preventDefault(); switch (evt.keyCode) { case 90: case 37: { //left if (v.currentTime < skipTime) { v.currentTime = 0; alert("已到达视频开头,无法快退"); } console.log("快退" + skipTime + "s"); v.currentTime = v.currentTime - skipTime; break; } case 88: case 39: { //right if (v.currentTime > v.duration - skipTime) { alert("已到达视频末尾,无法快进"); v.currentTime = v.duration; } console.log("快进" + skipTime + "s"); v.currentTime = v.currentTime + skipTime; break; } case 68: case 38: { //up if (v.volume > 1 - skipVolume) { alert("到达最大音量"); v.volume = 1; break; } console.log("音量放大" + skipVolume * 100 + "%"); v.volume = v.volume + 0.1; break; } case 83: case 40: { //down if (v.volume < skipVolume) { alert("到达最小音量"); v.volume = 0; break; } console.log("音量减小" + skipVolume * 100 + "%"); v.volume = v.volume - skipVolume; break; } case 32: { //pause if (v.paused) { console.log("播放"); v.play(); } else { console.log("暂停"); v.pause(); } break; } case 70: { //fullscreen if (!document.fullscreenElement) { v.requestFullscreen(); } else { if (document.exitFullscreen) { document.exitFullscreen(); } } break; } case 77: { //muse if (v.volume === 0) { v.volume = volumeTemp; } else { volumeTemp = v.volume; v.volume = 0; } break; } case 36: { //home v.currentTime = 0; break; } case 35: { //end v.currentTime = v.duration; break; } } }; } xuetangxAssistant(); })();