🏠 返回首頁 

Greasy Fork is available in English.

B站播放体验增强

默认网页全屏 网页全屏时滚轮切换宽屏 滚动页面到顶部无鼠标移动自动网页全屏

// ==UserScript==
// @name  B站播放体验增强
// @namespace  1018148046
// @author  颜太吓
// @version  7.02
// @match https://www.bilibili.com/video/*
// @match https://www.bilibili.com/bangumi/play/*
// @match https://www.bilibili.com/festival/*
// @run-at  document-start
// @unwrap
// @description 默认网页全屏 网页全屏时滚轮切换宽屏 滚动页面到顶部无鼠标移动自动网页全屏
// ==/UserScript==
'use strict';
(async (D, W) => {
let player, dbl_timeout, scroll_timeout, webmode
await new Promise(resolve => Object.defineProperty(W, 'player', {
set(e) {resolve(player = e)},
get() {return player}
}))
let wide = () => player.requestStatue(1).then(e => W.scroll({
top: player.mediaElement().getBoundingClientRect().top - 75
}))
const handle = {
click(e) {
if (e.target !== player.mediaElement()) return
e.stopPropagation()
clearTimeout(dbl_timeout)
if (e.detail === 1) dbl_timeout = setTimeout(() => player.isPaused() ? player.play() : player.pause(), 200)
if (e.detail === 2) webmode ? wide() : player.requestStatue(2)
},
dblclick(e) {e.target === player.mediaElement() && e.stopPropagation()},
wheel() {webmode && wide()},
mousemove() {clearTimeout(scroll_timeout)},
scroll() {
clearTimeout(scroll_timeout)
scroll_timeout = setTimeout(() => !W.scrollY && player.requestStatue(2), 388)
}
}
//Object.values(nano.EventType).forEach(e => player.on(e, (e) => console.log(e.type)))
Object.entries(handle).forEach(e => D.addEventListener(...e, true))
player.on("Player_LoadStart", () => player.requestStatue(2))
player.on("Player_Statue_Changed", () => webmode = player.getStates().mainScreen === 2)
location.pathname.includes('bangumi') && player.once("Player_Progress", () => player.requestStatue(2))
location.pathname.includes('bangumi') && player.on("Player_Ended", () => player.next())
})(document, window)