您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
take control of video speed
// ==UserScript== // @name video speed up // @namespace http://sthelse.net // @icon https://www.iconfinder.com/icons/2998137/download/ico // @version 0.1 // @description take control of video speed // @author chenkai // @match https://*/* // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @license MIT // ==/UserScript== /* jshint esnext:true */ (function() { 'use strict'; var statusBarId=-1; var rate=GM_getValue('rate', 1.5); console.log('start', rate); var videoObserver=function (arr){ for(var i=0;i<arr.length;i++){ var len=arr[i].addedNodes.length; for(var j=0;j<len;j++) { //var n=arr[i].addedNodes[j]; if(arr[i].addedNodes[j].tagName == 'VIDEO') { var v=arr[i].addedNodes[j]; if(1 != v.getAttribute('__vs_attached')) { v.addEventListener('canplay', function (){ this.playbackRate=rate; }); v.setAttribute('__vs_attached',1); } } } } }; var obs=new MutationObserver(videoObserver); console.log('attached'); obs.observe(document, {'childList':true, 'attributes':false,'subtree':true,'characterData':false}); var setRate = function (toRate){ rate=toRate; GM_setValue('rate',rate); document.querySelectorAll('video').forEach(i => { i.playbackRate=rate; }); setRateStatusBar(rate); } GM_registerMenuCommand("0.5x", function (){ setRate(0.5); }); GM_registerMenuCommand("1x", function (){ setRate(1); }); GM_registerMenuCommand("1.5x", function (){ setRate(1.5); }); GM_registerMenuCommand("2x", function (){ setRate(2); }); var setRateStatusBar = function (toRate) { statusBarId=GM_registerMenuCommand("Current Speed: "+toRate, function (){}, {id:statusBarId}); } setRateStatusBar(rate); })();