您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows you to play youtube videos from 0 to 16 times normal speed
// ==UserScript== // @name Youtube Advanced Speed Controller // @namespace http://tampermonkey.net/ // @version 0.1 // @description Allows you to play youtube videos from 0 to 16 times normal speed // @author Ehren Julien-Neitzert // @match https://www.youtube.com/* // @grant none // ==/UserScript== (function() { 'use strict'; //sets the rate of a youtube video function setRate(n) { document.getElementsByClassName("html5-video-container")[0] .getElementsByClassName("video-stream html5-main-video")[0] .playbackRate = n; } //gets the current rate of a youtube video function getRate() { return document.getElementsByClassName("html5-video-container")[0] .getElementsByClassName("video-stream html5-main-video")[0] .playbackRate; } //determines if theres a video bar to inject onto function hasVideo() { return document.getElementsByClassName("ytp-right-controls").length != 0; } //injects the speed controller function injectController() { //create speed controller var i = document.createElement('input'); i.style = "width: 30%; height: 70%; position: relative; bottom: 37%; background-Color: transparent; color: white; border-Color: transparent;"; i.id = 'spdctrl'; i.title = 'Playback Rate'; i.style.fontSize = '100%'; i.type = 'number'; i.value = getRate(); i.step = 0.1; i.max = 16; i.min = 0; i.onchange = function() { var s = i.value; setRate(s); }; //make the standard speed controls change the new speed controller document.getElementsByTagName('video')[0].onratechange = function() { if (document.activeElement != i) { //only change i's value if its not being focused (ie, just clicked on) i.value = getRate(); } }; //put speed controller in youtube bar toolbar = document.getElementsByClassName("ytp-right-controls")[0]; toolbar.prepend(i); } //every fraction of a second check if the controller's injected and if theres a video //I have to do this because I don't think theres an easy way to detect the crazy history rewrite stuff that they do to give the illusion of you loading a page when you're actually not window.setInterval(function(){ var controller = document.getElementById('spdctrl'); if (controller === null && hasVideo()) { injectController(); } }, 300); })();