您需要先安装一个扩展,例如 篡改猴、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() );