您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
B站视频快捷键调整倍速和网页全屏:更多倍速调节选项,按g键切换网页全屏,+/-/*//等快捷键调整倍速
// ==UserScript== // @name 哔哩哔哩倍速与网页全屏 // @namespace http://tampermonkey.net/ // @version 4.1.1 // @description B站视频快捷键调整倍速和网页全屏:更多倍速调节选项,按g键切换网页全屏,+/-/*//等快捷键调整倍速 // @author Longlong // @match http*://www.bilibili.com/video/* // @match http*://www.bilibili.com/cheese/play/* // @match http*://www.bilibili.com/bangumi/* // @match *://*.bilibili.tv/* // @icon https://www.google.com/s2/favicons?sz=64&domain=bilibili.com // @grant none // @license MIT // @run-at document-idle // ==/UserScript== (function () { 'use strict'; // 添加更多倍速选项 function addHighSpeedOptions() { const observer = new MutationObserver(function (mutations) { const ulElement = document.querySelector('.bpx-player-ctrl-playbackrate-menu'); if (ulElement) { const newLiHTML = '<li class="bpx-player-ctrl-playbackrate-menu-item" data-value="3.5">3.5x</li>' + '<li class="bpx-player-ctrl-playbackrate-menu-item" data-value="3">3.0x</li>' + '<li class="bpx-player-ctrl-playbackrate-menu-item" data-value="2.5">1坤x</li>'; ulElement.insertAdjacentHTML('afterbegin', newLiHTML); observer.disconnect(); // 完成任务后断开观察器 } }); // 开始观察文档变化 observer.observe(document.documentElement, { childList: true, subtree: true }); } // 检查是否在输入框中 function isInInputField() { return document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA' || document.activeElement.isContentEditable; } // 使用对象映射替代多个if语句,提高代码可读性和执行效率 const speedActions = { // 小键盘+ 或 > '107': () => { const video = document.querySelector('video'); video.playbackRate += 0.25; return video.playbackRate; }, '190': () => { const video = document.querySelector('video'); video.playbackRate += 0.25; return video.playbackRate; }, // 小键盘* '106': () => { const video = document.querySelector('video'); video.playbackRate += 0.125; return video.playbackRate; }, // 小键盘- 或 < '109': () => { const video = document.querySelector('video'); video.playbackRate -= 0.25; return video.playbackRate; }, '188': () => { const video = document.querySelector('video'); video.playbackRate -= 0.25; return video.playbackRate; }, // 小键盘/ '111': () => { const video = document.querySelector('video'); video.playbackRate -= 0.125; return video.playbackRate; }, // ? 或 小键盘. '191': () => { const video = document.querySelector('video'); video.playbackRate = 1; return video.playbackRate; }, '110': () => { const video = document.querySelector('video'); video.playbackRate = 1; return video.playbackRate; } }; // 合并键盘事件处理函数,减少事件监听器数量 function handleKeyboardEvent(event) { // 如果在输入框中,不执行快捷键功能 if (isInInputField()) return; // 处理G键网页全屏功能 (keydown事件) if (event.type === 'keydown' && (event.key === 'g' || event.key === 'G')) { event.preventDefault(); const webFullscreenButton = document.querySelector('.bpx-player-ctrl-web, [data-name="ctrl:webscreen"]'); if (webFullscreenButton) { webFullscreenButton.click(); } return; } // 处理倍速调整功能 (keyup事件) if (event.type === 'keyup' && speedActions[event.keyCode]) { speedActions[event.keyCode](); } } // 初始化所有功能 function initializeScript() { // 添加高倍速选项 addHighSpeedOptions(); // 添加键盘事件监听器,合并为一个函数处理 document.addEventListener('keydown', handleKeyboardEvent); document.addEventListener('keyup', handleKeyboardEvent); } // 页面加载完成后初始化脚本 window.addEventListener('load', initializeScript); })();