B站播放体验增强

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

// ==UserScript==
// @name  B站播放体验增强
// @namespace  1018148046
// @author  颜太吓
// @version  7.05
// @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, scroll_timeout, mode
  //hook播放器加载
  await new Promise(resolve => {
    const monitorPlayer = () => {
      if (W.player?.on) {
        resolve(player = W.player)
      } else {
        requestAnimationFrame(monitorPlayer);
      }
    }
    requestAnimationFrame(monitorPlayer);
  })
  //各种鼠标事件
  const handle = {
    mousemove(e) {
      clearTimeout(scroll_timeout)
    },
    scroll(e) {
      clearTimeout(scroll_timeout)
      scroll_timeout = setTimeout(() => !W.scrollY && player.requestStatue(2), 388)
    }
  }
  Object.entries(handle).forEach(e => D.addEventListener(...e, true))
  player.getElements().container.addEventListener("wheel", (e) => {
    if (mode == 2) player.requestStatue(1)
  })
  //各种播放器事件
  player.on("Player_Initialized", () => player.requestStatue(2))
  player.on('Player_Statue_Changed', (e) => mode = e.detail.mainScreen)
  player.on("Player_Ended", () => player.requestStatue(1))
  //Object.values(W.nano.EventType).forEach(e => player.on(e, (e) => console.log(e.type)))
})(document, window)