您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
B站内置多倍速播放
当前为
// ==UserScript== // @name B站多倍速播放 // @namespace http://tampermonkey.net/ // @version 1.1 // @description B站内置多倍速播放 // @author Candy. // @match https://www.bilibili.com/video/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @license MIT // @grant none // ==/UserScript== window.isDOMLoaded = false; window.isDOMRendered = false; document.addEventListener('readystatechange', function () { if (document.readyState === "interactive" || document.readyState === "complete") { window.isDOMLoaded = true; } }); (function() { 'use strict'; function processClass(parent, cur) { for (let ele of parent.children) { ele.className = "bilibili-player-video-btn-speed-menu-list" } cur.className = "bilibili-player-video-btn-speed-menu-list bilibili-player-active" } function sleep(time) { return new Promise(resolve => { setTimeout(resolve, time) }) } function insertLi(videoEle, speedUl, btn, rate) { var speedLi = document.createElement("li") speedLi.className = "bilibili-player-video-btn-speed-menu-list" if (typeof rate === 'number') { speedLi.dataset.value = rate speedLi.innerHTML = rate.toFixed(1) + 'x' speedLi.addEventListener('click', function (e) { processClass(speedUl, speedLi) videoEle.playbackRate = rate btn.innerHTML = rate.toFixed(1) + 'x' e.stopPropagation() }) speedUl.addEventListener('click', function (e) { if (speedLi.className !== "bilibili-player-video-btn-speed-menu-list") { speedLi.className = "bilibili-player-video-btn-speed-menu-list" } }) } else { speedLi.innerHTML = rate speedLi.addEventListener('click', function (e) { let userRate = parseFloat(Number(prompt("请输入倍速播放速率")).toFixed(1)) if (userRate) { insertLi(videoEle, speedUl, btn, userRate) } e.stopPropagation() }) } if (speedUl.firstElementChild.innerHTML !== '自定义') { speedUl.prepend(speedLi) } else { speedUl.firstElementChild.after(speedLi) } } function mainProcess(insertLi) { var videoEle = document.getElementsByTagName("video")[0] var speedUl = document.getElementsByClassName('bilibili-player-video-btn-speed-menu')[0] var btn = document.getElementsByClassName('bilibili-player-video-btn-speed-name')[0] console.log(speedUl) insertLi(videoEle, speedUl, btn, 2.5) insertLi(videoEle, speedUl, btn, 3.0) insertLi(videoEle, speedUl, btn, "自定义") } sleep(5000).then( () => { var targetNode = document.getElementsByClassName('list-box')[0] console.log(targetNode); var config = { attributes: true, childList: true, subtree: true }; var count = 0 // 当观察到变动时执行的回调函数 const callback = function (mutationsList, observer) { ++count if (count === 1) return if (count === 2) { // 执行插入程序 mainProcess(insertLi) count = 0 } }; // 创建一个观察器实例并传入回调函数 const observer = new MutationObserver(callback); // 以上述配置开始观察目标节点 observer.observe(targetNode, config); mainProcess(insertLi) } ) // Your code here... })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址