您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Use spacebar to toggle music playback in Faircamp based websites
// ==UserScript== // @name Faircamp Playback Toggle // @namespace https://openuserjs.org/users/burn // @version 2025-07-22 // @description Use spacebar to toggle music playback in Faircamp based websites // @author Burn // @include *://* // @grant none // @license MIT // @copyright 2025, burn (https://openuserjs.org/users/burn) // ==/UserScript== (function() { 'use strict'; const DBG = false; let storeName = GM_info.script.name, myLog = (msg) => { DBG && console.log(storeName + " | " + msg); }, qS = (el, scope) => { scope = (scope instanceof HTMLElement) ? scope : document; return scope.querySelector(el) || false; }, qSAll = (els, scope) => { scope = (scope instanceof HTMLElement) ? scope : document; return scope.querySelectorAll(els) || false; }, hidden, visibilityChange, state, tabFocused = (evt) => { myLog("tab has focus!"); if (document !== evt.target) { myLog("warning, document not equal to document. it is "); myLog(evt.target); // should be document } if (evt.target.body !== document.activeElement) { myLog("warning, document.activeElement not equal to document.body. it is "); myLog(evt.target.body); // should be document.body } }, elmTarget = qS("#content > div.docked_player > div.elements > button.playback"); if (!elmTarget) { myLog('track play button not found, exiting'); return; } if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support hidden = "hidden"; visibilityChange = "visibilitychange"; state = "visibilityState"; } else if (typeof document.mozHidden !== "undefined") { hidden = "mozHidden"; visibilityChange = "mozvisibilitychange"; state = "mozVisibilityState"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; state = "msVisibilityState"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; state = "webkitVisibilityState"; } if ('undefined' === typeof hidden) { myLog('document.hidden not found, exiting'); return; } document.addEventListener(visibilityChange, (e) => { return (false === document[hidden]) && tabFocused(e); }); window.addEventListener('keydown', (e) => { myLog("in keydown"); if(e.key === " " && e.target === document.body) { myLog("keydown ok"); e.preventDefault(); } }); qS('body').addEventListener("keyup", (e) => { myLog("in keyup"); if (e.key === " " && e.target === document.body) { e.preventDefault(); elmTarget.focus(); elmTarget.click(); elmTarget.blur(); myLog("keyup ok"); } }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址