包括切换分P后也自动打开字幕,可自由切换是否只在有分P的视频生效。
// ==UserScript== // @name 自动打开字幕 // @namespace http://tampermonkey.net/ // @version 1.0.1 // @description 包括切换分P后也自动打开字幕,可自由切换是否只在有分P的视频生效。 // @author aotmd // @match https://www.bilibili.com/video/* // @noframes // @license MIT // @run-at document-body // @grant none // ==/UserScript== ( function() { let setting={ /*true或者false*/ 只在有分P的视频生效:true } addLoadEvent( () => { window.setTimeout( () => { if(setting.只在有分P的视频生效&&!document.querySelector("#multi_page"))return; var flag = setInterval( () => { if ( !document.querySelector( "div.bpx-player-ctrl-btn.bpx-player-ctrl-subtitle > div.bpx-player-ctrl-btn-icon > span" ) ) return; document.querySelector( "div.bpx-player-ctrl-btn.bpx-player-ctrl-subtitle > div.bpx-player-ctrl-btn-icon > span" ).click(); clearInterval( flag ); }, 1 ); var video = document.querySelector( "div.bpx-player-video-perch > div > video" ); video.addEventListener( 'loadedmetadata', function() { setTimeout( () => { document.querySelector( "div.bpx-player-ctrl-btn.bpx-player-ctrl-subtitle > div.bpx-player-ctrl-btn-icon > span" ).click(); }, 1000 ) } ); }, 1000 ); } ); // 等待网页完成加载 window.addEventListener( 'load', function() { // 加载完成后执行的代码 }, false ); //仅第一次进入网页时加载代码. const { href } = window.location; const alreadyLoaded = JSON.parse( localStorage.loaded || '[]' ); if ( !alreadyLoaded.includes( href ) ) { alreadyLoaded.push( href ); localStorage.loaded = JSON.stringify( alreadyLoaded ); window.addEventListener( 'load', () => { // 加载完成后执行的代码 } ); } addStyle( `` ); /** * 添加浏览器执行事件 * @param func 无参匿名函数 */ function addLoadEvent( func ) { let oldOnload = window.onload; if ( typeof window.onload != 'function' ) { window.onload = func; } else { window.onload = function() { try { oldOnload(); } catch ( e ) { console.log( e ); } finally { func(); } } } } //添加css样式 function addStyle( rules ) { let styleElement = document.createElement( 'style' ); styleElement[ "type" ] = 'text/css'; document.getElementsByTagName( 'head' )[ 0 ].appendChild( styleElement ); styleElement.appendChild( document.createTextNode( rules ) ); } } )();