Greasy Fork is available in English.
默认网页全屏 网页全屏时滚轮切换宽屏 滚动页面到顶部无鼠标移动自动网页全屏
// ==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)