您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
默认网页全屏 网页全屏时滚轮切换宽屏 滚动页面到顶部无鼠标移动自动网页全屏
当前为
// ==UserScript== // @name B站播放体验增强 // @description 默认网页全屏 网页全屏时滚轮切换宽屏 滚动页面到顶部无鼠标移动自动网页全屏 // @namespace 1018148046 // @author 颜太吓 // @version 6.1 // @icon https://www.bilibili.com/favicon.ico // @match https://www.bilibili.com/* // @run-at document-start // @grant none // ==/UserScript== ((D) => { let url = location.pathname, dbl_timeout, scroll_timeout const player = { play_btn: ['.bpx-player-ctrl-play', '.squirtle-video-start', '.bilibili-player-video-btn-start'], webmode_btn: ['.bpx-player-ctrl-web', '.squirtle-video-pagefullscreen', '.bilibili-player-video-web-fullscreen'], webmode_dom: ['.mode-webscreen', '.full-screen', '.mode-webfullscreen'], play() {D.querySelector(this.play_btn.find(e => D.querySelector(e))).click()}, change() {D.querySelector(this.webmode_btn.find(e => D.querySelector(e))).click()}, get webmode() {return this.webmode_dom.find(e => D.querySelector(e))} }, handle = { click(e) { if (e.target.localName == 'video' || e.target.className == 'bilibili-player-dm-tip-wrap') { e.stopPropagation() clearTimeout(dbl_timeout) if (e.detail == 1) dbl_timeout = setTimeout(() => player.play(), 200) if (e.detail == 2) player.change() } }, dblclick(e) {if (e.target.localName == 'video' || e.target.className == 'bilibili-player-dm-tip-wrap') e.stopPropagation()}, wheel() {player.webmode && player.change()}, mousemove() {clearTimeout(scroll_timeout)}, scroll(e) { clearTimeout(scroll_timeout) scroll_timeout = setTimeout(() => { if (!window.scrollY && !player.webmode) player.change() }, 500) } } const style = D.createElement('style') style.type = 'text/css' style.innerHTML = `@keyframes init{from{transform:scaleX(1)}to{transform:scaleX(1)}}${player.webmode_btn.join(',')}{animation: init 0s}` D.documentElement.appendChild(style) D.addEventListener("animationend", function(e) { if (e.animationName != 'init') return D.removeEventListener("animationend", arguments.callee) Object.entries(handle).forEach(e => D.addEventListener(...e, true)) player.change() const mutationObserver = new MutationObserver(e => { if (url == location.pathname) return url = location.pathname !player.webmode && player.change() }) mutationObserver.observe(D.querySelector('title'), {childList: true}) }) })(document)