Greasy Fork is available in English.
bilibili关灯(把被新版B站藏起来的关灯按钮揪出来,在关闭弹幕按钮左边,还可以用快捷键,默认'A')
当前为
// ==UserScript==
// @name bilibili关灯
// @namespace hhh2000
// @version 0.3
// @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-end
// @grant none
// ==/UserScript==
function waitForNode(nodeSelector, callback) {
var node = nodeSelector();
if (node) {
callback(node);
} else {
setTimeout(function() { waitForNode(nodeSelector, callback); }, 100);
}
}
function waitForTrue(ifTrue, callback) {
if (ifTrue()) {
callback();
} else {
setTimeout(function() { waitForTrue(ifTrue, callback); }, 10);
}
}
function isFullScreen() {
return $('#bilibiliPlayer').hasClass('mode-fullscreen');
}
function abc(e) {console.log(e)};
//关灯按钮样式
function lightoff_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 ($('.bilibili-player-video-danmaku-switch>.bui-switch-input')[0].checked === false) {
$('.bilibili-player-video-danmaku-switch .bui-switch-body:first').css('background-color', dark_rgb);
$('.bilibili-player-video-danmaku-switch .bui-switch-body:first>.bui-switch-dot').css('color', dark_rgb);
}
else {
$('.bilibili-player-video-danmaku-switch .bui-switch-body:first').css('background-color', body_brgb);
$('.bilibili-player-video-danmaku-switch .bui-switch-body:first>.bui-switch-dot').css({'color': dot_crgb, 'background-color': dot_brgb});
}
}
function run(){
waitForNode(() => document.querySelector('.bilibili-player-video-danmaku-switch .bui-switch-dot'),
(node) => {
//防止重复加载
if ($('.bilibili-player-video-danmaku-switch .bui-switch-dot').length !== 1) return;
//插入关灯按钮
$("div.bilibili-player-video-danmaku-switch:first").clone().prependTo("div.bilibili-player-video-danmaku-root:first");
$('span.bui-switch-body>.bui-switch-dot:first>span').remove();
$('span.bui-switch-body>.bui-switch-dot:first')[0].innerHTML = '灯';
//点击关灯
$('.bilibili-player-video-danmaku-switch>.bui-switch-input:first').click(function(){
$('.bilibili-player-video-btn-setting-right-others-content-lightoff>input').click();
lightoff_css();
});
//键盘关灯
$(document).off('keydown.lightoff');
$(document).on('keydown.lightoff',function(e){
if(e.keyCode === 'A'.charCodeAt()){ //开关灯
$('.bilibili-player-video-btn-setting-right-others-content-lightoff>input').click();
//实际点击按钮和调用点击事件bui-switch-input')[0].checked值不同,需要下面这句
$('.bilibili-player-video-danmaku-switch>.bui-switch-input')[0].checked = !$('.bilibili-player-video-danmaku-switch>.bui-switch-input')[0].checked;
lightoff_css();
} else if(e.keyCode === 'W'.charCodeAt()) { //网页全屏
$('.bilibili-player-video-web-fullscreen').click();
} else if(e.keyCode === 'Q'.charCodeAt()) { //宽屏模式
isFullScreen() ? $('.bilibili-player-video-btn-fullscreen').click() : $('.bilibili-player-video-btn-widescreen').click();
} else if(e.keyCode === 'D'.charCodeAt()) { //开关弹幕
$('.bilibili-player-video-danmaku-switch>.bui-switch-input:last').click();
} else if(e.keyCode === 'T'.charCodeAt()) { //开关顶端弹幕
$('.bilibili-player-block-filter-type[ftype=top]').click();
} else if(e.keyCode === 'B'.charCodeAt()) { //开关底端弹幕
$('.bilibili-player-block-filter-type[ftype=bottom]').click();
}
});
//初始化关灯按钮
lightoff_css();
//激活系统弹幕设置class
$('.bilibili-player-video-danmaku-setting').mouseenter().mouseout();
//激活系统关灯class
$('.bilibili-player-video-btn.bilibili-player-video-btn-setting').mouseenter().mouseout();;
//解决因为激活关灯class,导致全屏时滚轮无法调节音量的问题
waitForTrue(()=>$('.bilibili-player-video-btn-setting-wrap').css('display') === 'block',
() => {
$('.bilibili-player-video-btn-setting-wrap').css('display', 'none');
});
});
}
function init() {
//内部加载视频窗口
waitForNode(() => document.querySelector('video'),
(node) => {
var oV = document.getElementsByTagName("video")[0];
oV.addEventListener('DOMNodeInserted', () => {
run();
});
});
run();
}
window.onload = init();