// ==UserScript== // @name bilibili关灯 // @namespace hhh2000 // @version 0.7.6 // @description bilibili关灯(把被新版B站藏起来的关灯按钮揪出来,在关闭弹幕按钮左边,还可以用快捷键,默认'A') // @author hhh2000 // @include *://*.bilibili.com/video/* // @include *://*.bilibili.tv/video/* // @include *://*.bilibili.com/bangumi/* // @include *://*.bilibili.tv/bangumi/* // @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js // @run-at document-start // @grant none // @downloadURL none // ==/UserScript== 'use strict'; hhh_lightoff_main = { init() { var //切换番剧和一般视频class vd_type = '', vd = {}, vd_config = { vd_class: { 'player':{'bili':'.player', 'bpx':'bpx-player'}, //main player 'webFullScreen':{'bili':'.bilibili-player-video-web-fullscreen'}, //网页全屏 'wideScreen':{'bili':'.bilibili-player-video-btn-widescreen'}, //宽屏 'danmukuTopClose':{'bili':'.bilibili-player-block-filter-type[data-name=ctlbar_danmuku_top_close]'}, //顶部弹幕 'danmukuTop':{'bili':'.bilibili-player-block-filter-type[ftype=top]'}, //顶部弹幕 'danmukuBottomClose':{'bili':'.bilibili-player-block-filter-type[data-name=ctlbar_danmuku_bottom_close]'}, //底部弹幕 'danmukuBottom':{'bili':'.bilibili-player-block-filter-type[ftype=bottom]'}, //底部弹幕 'thumbTooltip':{'bili':'.bui-thumb-tooltip'}, //弹幕透明度读数 'settingOpacity':{'bili':'.bilibili-player-setting-opacity'}, //弹幕透明度 'settingArea':{'bili':'.bilibili-player-setting-area'}, //显示区域 'volumeHint':{'bili':'.bilibili-player-volumeHint'}, //音量显示 'volumeHintText':{'bili':'.bilibili-player-volumeHint-text'}, //音量显示百分比读数 'switchBody':{'all':'.bui-switch-body'}, //系统关灯css设置 'switchDot':{'all':'.bui-switch-dot'}, //系统弹幕设置按钮wrap进度条拖动点 'switchInput':{'all':'.bui-switch-input'}, //弹幕设置switch按钮 'danmakuRoot':{'bili':'.bilibili-player-video-danmaku-root', 'bpx':'.bpx-player-dm-root'}, //系统弹幕设置条 'danmakuSwitch':{'bili':'.bilibili-player-video-danmaku-switch', 'bpx':'.bpx-player-dm-switch'}, //关闭弹幕按钮 'danmakuSetting':{'bili':'.bilibili-player-video-danmaku-setting'}, //系统弹幕设置按钮 'danmakuSettingWrap':{'bili':'.bilibili-player-video-danmaku-setting-wrap'}, //系统弹幕设置按钮wrap 'videoWrap':{'bili':'.bilibili-player-video-wrap'}, //播放wrap 'videoTopMask':{'bili':'.bilibili-player-video-top-mask'}, //全屏时鼠标悬停时产生的顶端mask 'playVideo':{'bili':'.bilibili-player-video-btn'}, //系统设置 'playSetting':{'bili':'.bilibili-player-video-btn-setting'}, //系统播放设置 'playSettingWrap':{'bili':'.bilibili-player-video-btn-setting-wrap'}, //系统播放设置wrap 'playSettingAutoplay':{'bili':'.bilibili-player-video-btn-setting-left-autoplay'}, //自动播放 'playSettingRepeat':{'bili':'.bilibili-player-video-btn-setting-left-repeat'}, //洗脑循环 'playSettingLightoff':{'bili':'.bilibili-player-video-btn-setting-right-others-content-lightoff input', 'bpx':'squirtle-single-setting-other-choice squirtle-lightoff'}, //关灯按钮 'bpxStateLightOff':{'bpx':'bpx-state-light-off'}, //关灯bpx }, set_vd(vd_type) { for(var k in this.vd_class){ var class_str = this.vd_class[k][vd_type]!==undefined? this.vd_class[k][vd_type]: this.vd_class[k]['all']; vd[k] = class_str; //console.log('--'+vd[k]); } } }; var //config ON = true, OFF = false, config = { //一些主要开关设置 sets: {}, getCheckboxSetting(key) { return this.sets[key]['status']; }, saveCheckboxSetting() { for(var o in this){ if(o.indexOf('b_') === 0){ var op = this[o]['options']; for(var k in op){ this.sets[k] = op[k]; } } } }, b_playerCheckbox: { options: { lightOffWhenPlaying: { text: '播放时自动关灯', status: OFF }, lightOnWhenPause: { text: '暂停时自动开灯', status: OFF }, autoPlay: { text: '开启自动播放', status: OFF, fn: '', tips: '' }, repeat: { text: '开启洗脑循环', status: ON, tips: '' }, lightOff: { text: '自动关灯', status: OFF, tips: '' }, volumeControlWhenNonFullScreen: { text: '开启非全屏滚轮音量调节', status: ON, tips: '' }, volumeControlWhenPause: { text: '非全屏暂停时滚轮音量调节', status: ON, tips: '' }, danmuOpacityControl: { text: '开启滚轮弹幕透明度控制', status: ON, tips: '' }, //ctrl+滚轮 removeVideoTopMask: { text: '去掉顶部mask', status: ON, tips: '' } }, btn: '设置' }, //快捷键 keyCode: { 'enter': 13, 'esc': 27, '=': 187, '-': 189, '0': 48, '1': 49, '2': 50, '3': 51, '4': 52, '5': 53, '6': 54, '7': 55, '8': 56, '9': 57, 'A': 65, 'B': 66, 'C': 67, 'D': 68, 'E': 69, 'F': 70, 'G': 71, 'H': 72, 'I': 73, 'J': 74, 'K': 75, 'L': 76, 'M': 77, 'N': 78, 'O': 79, 'P': 80, 'Q': 81, 'R': 82, 'S': 83, 'T': 84, 'U': 85, 'V': 86, 'W': 87, 'X': 88, 'Y': 89, 'Z': 90, 'left': 37, 'up': 38, 'right': 39, 'down': 40, 'space': 32, '[': 219, ']': 221, '\\': 220, ';': 186, "'": 222, ',': 188, '.': 190, '/': 191, }, QDs: {}, getQD(key) { return this.QDs[key]; }, saveQD() { for (let [key, { value, text }] of Object.entries(this.quickDo)) { this.QDs[key] = {value: value, keyCode: value.charCodeAt(), text: text}; } }, quickDo: { 'lightOff': { value: 'A', text: '关灯', }, 'webFullscreen': { value: 'W', text: '网页全屏', }, 'widescreen': { value: 'Q', text: '宽屏', }, 'danmu': { value: 'D', text: '弹幕', }, 'danmuTop': { value: 'T', text: '顶部弹幕', }, 'danmuBottom': { value: 'B', text: '底部弹幕', }, 'videoRepeat': { value: 'R', text: '洗脑循环', }, 'subDanmuOpacity': { value: 'Z', text: '减弹幕透明度', }, 'addDanmuOpacity': { value: 'C', text: '加弹幕透明度', }, 'quarterArea': { value: '1', text: '1/4屏', }, 'halfArea': { value: '2', text: '半屏', }, 'threeQuarterArea': { value: '3', text: '3/4屏', }, 'nonOverArea': { value: '4', text: '不重叠', }, 'fullArea': { value: '5', text: '不限', }, }, }; function abc(e) {console.log(e)} function waitForNode(nodeSelector, callback, times) { if(times < 0) return; var node = nodeSelector(); if (node) { callback(node); } else { times-=3; setTimeout(function() { waitForNode(nodeSelector, callback, times); }, 100); } } function waitForTrue(ifTrue, callback) { if (ifTrue()) { callback(); } else { setTimeout(function() { waitForTrue(ifTrue, callback); }, 100); } } function is_lightoff2() { return !player.getPlayerState().lightOn; } function is_lightoff() { if (vd_type === 'bili') { return !player.getPlayerState().lightOn } else if(vd_type === 'bpx') { return $('.bpx-player.bpx-state-light-off').length === 1 } else return null; } function lightoff2() { $(vd['playSettingLightoff']).click(); } function lightoff() { if (vd_type === 'bili') { $(vd['playSettingLightoff']).click() } else if(vd_type === 'bpx') { if(is_lightoff() === true) { $('.bpx-player').attr('class', 'bpx-player'); $('.squirtle-single-setting-other-choice.squirtle-lightoff').attr('class', 'squirtle-single-setting-other-choice squirtle-lightoff'); } else { $('.bpx-player').attr('class', 'bpx-player bpx-state-light-off'); $('.squirtle-single-setting-other-choice.squirtle-lightoff').attr('class', 'squirtle-single-setting-other-choice squirtle-lightoff active'); } } } //squirtle-single-setting-other-choice squirtle-lightoff active //关灯按钮 //bpx-player bpx-state-light-off //实际关灯 //bpxStateLightoff //关灯按钮样式 function lightoff_btn_css() { var body_brgb = 'rgb(160, 130, 110)'; var dot_crgb = 'rgb(230, 200, 180)'; var dot_brgb = 'rgb(50, 50, 50)'; var dark_rgb = 'rgb(77, 77, 77)'; if ($('#hhh_lightoff '+vd['switchInput'])[0].checked === false) { //关灯 $('#hhh_lightoff '+vd['switchBody']+':first').css('background-color', dark_rgb); $('#hhh_lightoff '+vd['switchBody']+':first>'+vd['switchDot']).css('color', dark_rgb); } else { $('#hhh_lightoff '+vd['switchBody']+':first').css('background-color', body_brgb); $('#hhh_lightoff '+vd['switchBody']+':first>'+vd['switchDot']).css({'color': dot_crgb, 'background-color': dot_brgb}); } } //关灯按钮 function lightoff_btn() { lightoff(); if(is_lightoff() === $('#hhh_lightoff '+vd['switchInput'])[0].checked) { //checked==true开灯 false关灯 $('#hhh_lightoff '+vd['switchInput'])[0].checked = !$('#hhh_lightoff '+vd['switchInput'])[0].checked; } lightoff_btn_css(); } //显示提示 function showHint(parent, selector_str, text){ $(vd['volumeHint']).css('display', 'none'); //隐藏所有提示,避免重叠 $(selector_str+'>'+vd['volumeHintText']).text(text); //百分比显示 var Hint = $(selector_str); //显示及渐隐效果(抄bilibili^^) clearTimeout(parent.showHintTimer), Hint.stop().css("opacity", 1).show(), parent.showHintTimer = window.setTimeout((function() { Hint.animate({ opacity: 0 }, 300, (function() { $(this).hide() } )) } ), 1e3) } //非全屏滚轮音量调节 0~1 (b站默认滚轮操作某些情况会失效,一并处理全屏情况) //两个参数指定屏幕范围(按百分比),第三个参数表示滚动一下增加的音量百分比,参数四表示暂停时是否调解 function wheel_volumeHint(screenLeft, screenRight, delta, isPauseVolume){ //div(抄bilibili^^) var volumeHint = ''; if($('#hhh_volumeHint').length === 0) $('.bilibili-player-video-wrap').append(volumeHint); //add wheelevent $('.bilibili-player-video-wrap').off('mousewheel.hhh_volumeHint'); $('.bilibili-player-video-wrap').on('mousewheel.hhh_volumeHint', function(e){ if(e.ctrlKey || e.altKey || e.shiftKey) return; //缺省屏幕百分比参数,默认0.3~0.7 screenLeft = screenLeft<0?undefined:screenLeft>1?undefined:screenLeft; screenRight = screenRight<0?undefined:screenRight>1?undefined:screenRight; if(screenLeft === undefined || screenRight === undefined) { screenLeft = 0.3; screenRight = 0.7 } //缺省音量百分比,默认3 delta = delta<1?3:delta>100?3:delta===undefined?3:delta; //非暂停 && 鼠标在屏幕指定位置时处理 var pauseState = isPauseVolume || player.getState() !== 'PAUSED'; var w = $(this).width(); var e_in_Hint = w !== $(e.target).width(); //处理鼠标在提示上的情况 var inLimit = e_in_Hint || (e.originalEvent.offsetX > w*screenLeft && e.originalEvent.offsetX < w*screenRight); if(player.isFullScreen() === true || (pauseState && inLimit)) { e.preventDefault(); //阻止页面滚动 e.stopPropagation(); //阻止冒泡 var wheelDelta = e.originalEvent.wheelDelta; var volume = player.volume(); if(wheelDelta >= 120) { //向上滚动,减少音量 player.volume(volume+(delta/100)); } else if(wheelDelta <= -120) { //向下滚动,增大音量 player.volume(volume-(delta/100)); } var vol = player.volume(); if(vol <= 0) $('#hhh_volumeHint .bilibili-player-volumeHint-icon').attr('class', 'bilibili-player-volumeHint-icon video-state-volume-min'); else if(vol >= 1) $('#hhh_volumeHint .bilibili-player-volumeHint-icon').attr('class', 'bilibili-player-volumeHint-icon video-state-volume-max'); else $('#hhh_volumeHint .bilibili-player-volumeHint-icon').attr('class', 'bilibili-player-volumeHint-icon'); if(vol <= 0) showHint(this, '#hhh_volumeHint', '静音'); else showHint(this, '#hhh_volumeHint', Math.round(vol*100)+'%'); } }); } /* * 调节透明度 * 利用系统mousedown事件 * '正数': right, '负数': left, -100 ~ +100 */ function adjust_progress(selector_str, percent){ var selector = document.querySelector(selector_str); var e1 = new MouseEvent('mousedown'); var e2 = new MouseEvent('mouseup'); var danmaku_setting_wrap = '.bilibili-player-video-danmaku-setting-wrap'; var tip_selector = document.querySelector(selector_str+' .bui-thumb-tooltip'); function calc_bar_len(percent){ var p = percent - 10; p = p<0? 0: p>90? 90: p; return p<=40? p*2.5: (p-40)*2 + 40*2.5; //进度条对应百分比的系统算法 } $(danmaku_setting_wrap).css({"display":"block"}); var selector_rect = selector.getClientRects(); var curr_percent = Number(tip_selector.innerHTML.slice(0,-1)); var clientX = selector_rect[0].left + calc_bar_len(curr_percent + percent); e1.initMouseEvent('mousedown',1,1,window,1,0,0,clientX,0,0,0,0,0,0,null); e2.initMouseEvent('mouseup' ,1,1,window,1,0,0,clientX,0,0,0,0,0,0,null); selector.dispatchEvent(e1); selector.dispatchEvent(e2); $(danmaku_setting_wrap).css({"display":"none"}); $('.bilibili-player-video-danmaku-setting').mouseleave(); //激活设置,记忆进度条位置 return tip_selector.innerHTML.slice(0,-1); } /* * 控制进度条 * .bilibili-player-setting-opacity 透明度 * .bilibili-player-setting-area 显示区域 * .bilibili-player-setting-speedplus 弹幕速度 等 * 利用系统mousedown事件 * 0 ~ 100 */ function set_progress(selector_str, percent){ var selector = document.querySelector(selector_str); var e1 = new MouseEvent('mousedown'); var e2 = new MouseEvent('mouseup'); var danmaku_setting_wrap = '.bilibili-player-video-danmaku-setting-wrap'; function calc_bar_len(percent){ var p = percent - 10; p = p<0? 0: p>90? 90: p; return p<=40? p*2.5: (p-40)*2 + 40*2.5; //进度条对应百分比的系统算法 } $(danmaku_setting_wrap).css({"display":"block"}); var selector_rect = selector.getClientRects(); var clientX = selector_rect[0].left + calc_bar_len(percent); e1.initMouseEvent('mousedown',1,1,window,1,0,0,clientX,0,0,0,0,0,0,null); e2.initMouseEvent('mouseup' ,1,1,window,1,0,0,clientX,0,0,0,0,0,0,null); selector.dispatchEvent(e1); selector.dispatchEvent(e2); $(danmaku_setting_wrap).css({"display":"none"}); var danmaku_setting = '.bilibili-player-video-danmaku-setting'; $(danmaku_setting).mouseleave(); //激活设置,记忆进度条位置 } //滚轮调节弹幕透明度(ctrl),参数表示滚动一下增加的透明度百分比 function wheel_opacity(delta){ //add wheelevent $('.bilibili-player-video-wrap').off('mousewheel.hhh_opacity'); $('.bilibili-player-video-wrap').on('mousewheel.hhh_opacity', function(e){ if(e.ctrlKey === true) { //缺省透明度百分比,默认5 delta = delta<1?5:delta>100?5:delta===undefined?5:delta; e.preventDefault(); //阻止页面滚动 e.stopPropagation(); //阻止冒泡 var wheelDelta = e.originalEvent.wheelDelta; var opacity = -1; if(wheelDelta >= 120) { //向上滚动,增大透明度 opacity = adjust_progress('.bilibili-player-setting-opacity', delta); } else if(wheelDelta <= -120) { //向下滚动,减少透明度 opacity = adjust_progress('.bilibili-player-setting-opacity', -delta); } if(opacity >= 0) showHint(document, '#hhh_opacityHint', '透 '+opacity+'%'); } }); } /* function set_contextmenu() { //模拟右键菜单消息,激活菜单DOM var evt = new MouseEvent('contextmenu', { clientX:-9999, clientY:-9999 }); $('.bilibili-player-video-wrap')[0].dispatchEvent(evt); //右键菜单弹出时添加项 (function add_menu() { var oV = $('.bilibili-player-context-menu-container.black.bilibili-player-context-menu-origin')[0]; oV.addEventListener('DOMSubtreeModified', function(e) { if(e.target.className.indexOf('bilibili-player-context-menu-container black bilibili-player-context-menu-origin') !== -1 && $(this).attr('id') === undefined) { this.removeEventListener('DOMSubtreeModified', arguments.callee); var $sys_hotkey = $(this).find('li:eq(2)'); var $hhh_hotkey = $sys_hotkey.clone(false, false).insertAfter($sys_hotkey).css('display', '').find('a').text('快捷键说明(bilibili关灯)'); //
Space播放/暂停
$hhh_hotkey.click(function(){ $('#hhh_hotkey').clone(true,true).replaceAll($('.bilibili-player-hotkey-panel-container:last')).attr('id', ''); }); $sys_hotkey.find('a').click(function(){ $('#sys_hotkey').clone(true,true).replaceAll($('.bilibili-player-hotkey-panel-container:last')).attr('id', ''); }); add_menu(); } }); })(); // (function add_hotkey() { var oV = $('.bilibili-player-video-wrap')[0]; oV.addEventListener('DOMNodeInserted', function(e) { if(e.target.className !== undefined && e.target.className.indexOf('bilibili-player-hotkey-panel-container active') !== -1) { this.removeEventListener('DOMNodeInserted', arguments.callee); $(e.target).attr('class', 'bilibili-player-hotkey-panel-container'); var $hotkey = $(e.target); $hotkey.clone().insertBefore($hotkey).attr({'class': 'bilibili-player-hotkey-panel-container','id': 'sys_hotkey'}); $hotkey.clone().insertBefore($hotkey).attr({'class': 'bilibili-player-hotkey-panel-container','id': 'hhh_hotkey'}); //set_hhh_hotkey } }); })(); //模拟点击,激活热键菜单DOM $('.bilibili-player-context-menu-container.black.bilibili-player-context-menu-origin a:eq(2)').click(); } set_contextmenu() */ //主程序 function run(){ waitForNode(() => document.querySelector('video'), (node) => { vd_type = $('.player').length===1? 'bili':$('.bpx-player').length===1? 'bpx': ''; vd_config.set_vd(vd_type); }, 10000); waitForNode(() => document.querySelector(vd['danmakuSwitch']+' '+ vd['switchDot']), (node) => { //保存设置信息 && 快捷键信息 config.saveCheckboxSetting(); config.saveQD(); //防止重复加载,不精确,可能跟其他插件冲突 if ($(vd['danmakuSwitch']+' '+ vd['switchDot']).length !== 1) return; //插入关灯按钮 //$(vd['danmakuSwitch']+':first').clone().prependTo(vd['danmakuRoot']+':first'); $(`${vd['danmakuSwitch']}:first`).clone().prependTo(vd['danmakuRoot']+':first'); $(vd['danmakuSwitch']+':first')[0].id = 'hhh_lightoff'; //$('#hhh_lightoff '+vd['switchDot']+'>span').remove(); $(`#hhh_lightoff ${vd['switchDot']}>span`).remove(); $('#hhh_lightoff '+vd['switchDot'])[0].innerHTML = '灯'; //点击关灯 $('#hhh_lightoff '+vd['switchInput']+':first').click(function(){ lightoff_btn() }); ////// //lightoff_btn_css(); //return; //键盘关灯等 var opacity; var parent = document; $(document).off('keydown.hhh_lightoff'); $(document).on('keydown.hhh_lightoff',function(e){ if(e.keyCode === config.getQD('lightOff')['keyCode']){ //开关灯 is_lightoff() ? showHint(parent, '#hhh_wordsHint', '开灯') : showHint(parent, '#hhh_wordsHint', '关灯'); lightoff_btn(); } else if(e.keyCode === 'W'.charCodeAt()) { //网页全屏 $(vd['webFullScreen']).click(); } else if(e.keyCode === 'Q'.charCodeAt()) { //宽屏模式 player.isFullScreen() ? $(vd['webFullScreen']).click() : $(vd['wideScreen']).click(); } else if(e.keyCode === 'D'.charCodeAt()) { //开关弹幕 $(vd['danmakuSwitch']+'>'+vd['switchInput']+':last').click(); player.getPlayerState().danmaku.show === true ? showHint(parent, '#hhh_wordsHint', '开弹幕') : showHint(parent, '#hhh_wordsHint', '关弹幕'); } else if(e.keyCode === 'T'.charCodeAt()) { //开关顶部弹幕 // bpx-player-block-filter-type bpx-player-block-typeTop bpx-player-active $('.bilibili-player-block-filter-type[data-name=ctlbar_danmuku_top_close]').length === 0 ? showHint(parent, '#hhh_wordsHint', '关闭顶部弹幕') : showHint(parent, '#hhh_wordsHint', '打开顶部弹幕'); $('.bilibili-player-block-filter-type[ftype=top]').click(); } else if(e.keyCode === 'B'.charCodeAt()) { //开关底部弹幕 $('.bilibili-player-block-filter-type[data-name=ctlbar_danmuku_bottom_close]').length === 0 ? showHint(parent, '#hhh_wordsHint', '关闭底部弹幕') : showHint(parent, '#hhh_wordsHint', '打开底部弹幕'); $('.bilibili-player-block-filter-type[ftype=bottom]').click(); } else if(e.keyCode === 'R'.charCodeAt()) { //开关洗脑循环 $(".bilibili-player-video-btn-setting-left-repeat>.bui-switch-input").click(); } else if(e.keyCode === 'Z'.charCodeAt()) { //-弹幕透明度 window.setTimeout((function() { //长按时保持DOM更新 opacity = adjust_progress('.bilibili-player-setting-opacity', -10); if(opacity >= 0) showHint(parent, '#hhh_opacityHint', '透 '+opacity+'%'); }),0); } else if(e.keyCode === 'C'.charCodeAt()) { //+弹幕透明度 window.setTimeout((function() { opacity = adjust_progress('div.bilibili-player-setting-opacity', 10); if(opacity >= 0) showHint(parent, '#hhh_opacityHint', '透 '+opacity+'%'); }),0); } else if(e.keyCode === '1'.charCodeAt()) { //1/4屏 set_progress('.bilibili-player-setting-area', 0); showHint(parent, '#hhh_wordsHint', '1/4屏'); } else if(e.keyCode === '2'.charCodeAt()) { //半屏 set_progress('.bilibili-player-setting-area', 25); showHint(parent, '#hhh_wordsHint', '半屏'); } else if(e.keyCode === '3'.charCodeAt()) { //3/4屏 opacity = set_progress('.bilibili-player-setting-area', 50); showHint(parent, '#hhh_wordsHint', '3/4屏'); } else if(e.keyCode === '4'.charCodeAt()) { //不重叠 opacity = set_progress('.bilibili-player-setting-area', 75); showHint(parent, '#hhh_wordsHint', '不重叠'); } else if(e.keyCode === '5'.charCodeAt()) { //不限 opacity = set_progress('.bilibili-player-setting-area', 100); showHint(parent, '#hhh_wordsHint', '不限'); } else if(e.keyCode === 38 || e.keyCode === 40) { //up+down arrow 系统音量提示显示时隐藏自定义音量提示 $(".bilibili-player-volumeHint").css('display', 'none'); } }); //初始化关灯按钮 lightoff_btn_css(); //一些CLASS命名 var danmaku_setting = '.bilibili-player-video-danmaku-setting'; var video_setting = '.bilibili-player-video-btn.bilibili-player-video-btn-setting'; var video_setting_wrap = '.bilibili-player-video-btn-setting-wrap'; //激活系统弹幕设置,以此使用网页全屏等 $(danmaku_setting).mouseenter().mouseleave(); //激活系统关灯设置,以此使用关灯 //去掉mouseout(),否则如果太快执行mouseout()无法激活关灯class,应该是mouseenter()未执行完就被mouseout打断了 $(video_setting).mouseenter(); //避免显示激活页面 waitForNode(() => document.querySelector(video_setting_wrap), (node) => { $(node).css({"visibility":"hidden"}); //visible }) //解决因为激活关灯class,导致全屏时滚轮无法调节音量的问题 waitForTrue(()=>$(video_setting_wrap).css('display') === 'block', () => { $(video_setting_wrap).css('display', 'none').css('visibility', 'visible'); }); //非全屏滚轮音量调节 //两个参数指定屏幕范围(按百分比),第三个参数表示滚动一下增加的音量百分比,参数四表示暂停时是否调解 if(config.getCheckboxSetting('volumeControlWhenNonFullScreen') === ON) wheel_volumeHint(0.30, 0.70, 3, config.getCheckboxSetting('volumeControlWhenPause')); //添加wordsHint opacityHint DOM(抄bilibili^^) var div_wordsHint = ''; if($('#hhh_wordsHint').length === 0) $('.bilibili-player-video-wrap').append(div_wordsHint); var div_opacityHint = ''; if($('#hhh_opacityHint').length === 0) $('.bilibili-player-video-wrap').append(div_opacityHint); //滚轮调节弹幕透明度(ctrl),参数表示滚动一下增加的透明度百分比 if(config.getCheckboxSetting('danmuOpacityControl') === ON) wheel_opacity(); //因为遮挡弹幕,去掉全屏时鼠标悬停时产生的顶端mask if(config.getCheckboxSetting('removeVideoTopMask') === ON) $('.bilibili-player-video-top-mask').removeClass(); // //set_contextmenu(); //addEventListener player.addEventListener('video_media_playing', () => config.getCheckboxSetting('lightOffWhenPlaying') === ON && !is_lightoff() && lightoff_btn()); player.addEventListener('video_media_pause', () => config.getCheckboxSetting('lightOnWhenPause') === ON && is_lightoff() && lightoff_btn()); //自动运行 if(config.getCheckboxSetting('autoPlay') === ON && $('.bilibili-player-video-btn-setting-left-autoplay>.bui-switch-input')[0].checked === false) //开启自动播放 $(".bilibili-player-video-btn-setting-left-autoplay>.bui-switch-input").click(); if(config.getCheckboxSetting('repeat') === ON) $(".bilibili-player-video-btn-setting-left-repeat>.bui-switch-input").click(); //开启洗脑循环 if(config.getCheckboxSetting('lightOff') === ON) lightoff_btn(); //自动关灯 }, 10000); } //初始化 function init() { //内部加载视频窗口 waitForNode(() => document.querySelector('video'), (node) => { var oV = document.getElementsByTagName("video")[0]; oV.addEventListener('DOMNodeInserted', () => { run(); }); }); run(); } init(); } } window.onload = hhh_lightoff_main.init();