您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Pressing space when watching a video on Youtube will always pause the video instead of functioning like Page Down key.
// ==UserScript== // @name Youtube Space=Pause // @namespace s4nji // @author s4nji // @description Pressing space when watching a video on Youtube will always pause the video instead of functioning like Page Down key. // @license CC0 // @include https://www.youtube.com/watch* // @version 2 // @grant none // ==/UserScript== /* - - - - - *\ * Variables * \* - - - - - */ var inputFocus = false; var debug = false; /* - - - - - - - - - *\ * Utility Functions * \* - - - - - - - - - */ // Debug Console Logging function clog(msg) { if (debug) { console.log("YtS=P | "+msg); } } // Run codes "unsafely" function contentEval(source) { "use strict"; // Check for function input. if ('function' === typeof source) { // Execute this function with no arguments, by adding parentheses. // One set around the function, required for valid syntax, and a // second empty set calls the surrounded function. source = '(' + source + ')();'; } // Create a script node holding this source code. var script = document.createElement('script'); script.setAttribute("type", "application/javascript"); script.textContent = source; // Insert the script node into the page, so it will run, and immediately // remove it to clean up. document.body.appendChild(script); document.body.removeChild(script); } // Set inputFocus to true if an input box is on focus function setInputFocus(bool) { "use strict"; return function() { if ( typeof bool === "boolean" ) { inputFocus = bool; clog("inputFocus = " + inputFocus); } }; } // Add Event Listeners function hookInputFocus() { "use strict"; var inputs = document.querySelectorAll("input"), i; for (i=0; i<inputs.length; i+=1) { inputs[i].addEventListener('focus', setInputFocus(true)); inputs[i].addEventListener('blur', setInputFocus(false)); clog("hooked "+i+"!"); } } /* - - - - - - - *\ * Main Function * \* - - - - - - - */ function main() { "use strict"; document.body.addEventListener('keydown', function(event) { clog("inputFocus == " + inputFocus); if (event.keyCode === 32 && !inputFocus) { event.preventDefault(); var status = document.querySelector("#movie_player").getPlayerState(); if ( status === 1 || status === 3 ) { contentEval('document.querySelector("#movie_player").pauseVideo();'); } else if ( status === 2 || status === 0 ) { contentEval('document.querySelector("#movie_player").playVideo();'); } // N/A (-4), unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5). } }); hookInputFocus(); } // Start on load document.addEventListener('DOMContentLoaded', main() );