// ==UserScript== // @name bilibili 倍速控制 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 使用快捷键控制bilibili的倍速选择 // @author pipizhu // @match http*://www.bilibili.com/video/* // @icon https://www.google.com/s2/favicons?sz=64&domain=bilibili.com // @grant none // @license MIT // @downloadURL none // ==/UserScript== ;(function () { 'use strict' init() })() async function init() { try { await delay(1000) const result = await initKeyElems() console.log('result', result) } catch (e) { console.log('error', e) } } async function test() { return new Promise((res, rej) => { setTimeout(() => { res }, 200) }) } async function initKeyElems() { let observed = false let count = 0 async function getKeys() { return new Promise(async (resolve, reject) => { // await delay(1000) const ctrlKeylist = Array.from( document.querySelectorAll('.bpx-player-ctrl-playbackrate-menu li') ) if (ctrlKeylist.length === 0) { if (count <= 20) { count += 1 await delay(1000) return getKeys() } else { reject('get ctrl keys error ') } } else { resolve(ctrlKeylist) } }) } const keys = await getKeys() return keys } async function delay(time) { return new Promise(res => setTimeout(() => res(), time)) }