您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
浏览器全屏时,把B站播放界面调整到合适的更大尺寸
// ==UserScript== // @name B站播放界面尺寸自动调整 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 浏览器全屏时,把B站播放界面调整到合适的更大尺寸 // @author coccvo // @match https://www.bilibili.com/video/* // @icon https://www.bilibili.com/favicon.ico // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; // 定义目标尺寸 const targetWidth = "1415px"; const targetHeight = "796px"; const videoContainerWidthThreshold = 1882; // 防抖设置 let resizeTimeout; const debounceTime = 200; // 防抖延迟时间,毫秒 // 缓存DOM元素 let videoContainer = null; let leftContainer = null; let playerWrap = null; let bilibiliPlayer = null; // 检查并应用样式 function checkAndApplyStyles() { // 如果元素未找到,尝试重新获取 if (!videoContainer || !leftContainer || !playerWrap || !bilibiliPlayer) { videoContainer = document.getElementById("mirror-vdcon"); leftContainer = document.querySelector(".left-container.scroll-sticky"); playerWrap = document.getElementById("playerWrap"); bilibiliPlayer = document.getElementById("bilibili-player"); } // 检查元素是否存在 if (!videoContainer || !leftContainer || !playerWrap || !bilibiliPlayer) { console.log("未找到必要的元素"); return; } // 获取视频容器的当前宽度 const containerWidth = videoContainer.clientWidth; // 如果容器宽度未变化,不执行后续操作 if (checkAndApplyStyles.lastWidth === containerWidth) { return; } checkAndApplyStyles.lastWidth = containerWidth; // 清除之前添加的样式 leftContainer.style.removeProperty('width'); playerWrap.style.removeProperty('height'); bilibiliPlayer.style.removeProperty('width'); bilibiliPlayer.style.removeProperty('height'); // 如果视频容器宽度达到或超过阈值,应用自定义样式 if (containerWidth >= videoContainerWidthThreshold) { leftContainer.style.width = targetWidth; playerWrap.style.height = targetHeight; bilibiliPlayer.style.width = targetWidth; bilibiliPlayer.style.height = targetHeight; console.log("已应用自定义样式"); } else { console.log("未应用自定义样式,视频容器宽度不足"); } } checkAndApplyStyles.lastWidth = null; // 防抖函数 function debounce(func, delay) { return function() { const context = this; const args = arguments; clearTimeout(resizeTimeout); resizeTimeout = setTimeout(() => func.apply(context, args), delay); }; } // 优化后的窗口大小变化处理函数 const optimizedResizeHandler = debounce(checkAndApplyStyles, debounceTime); // 初始检查 checkAndApplyStyles(); // 创建观察器实例 const observer = new MutationObserver(mutationsList => { // 检查是否有相关DOM变化 for (const mutation of mutationsList) { if ( mutation.type === 'attributes' && (mutation.target.id === 'mirror-vdcon' || mutation.target.classList.contains('left-container') || mutation.target.id === 'playerWrap' || mutation.target.id === 'bilibili-player') ) { optimizedResizeHandler(); break; } } }); // 开始观察相关节点 if (videoContainer) observer.observe(videoContainer, { attributes: true, attributeFilter: ['style', 'class'] }); if (leftContainer) observer.observe(leftContainer, { attributes: true, attributeFilter: ['style', 'class'] }); if (playerWrap) observer.observe(playerWrap, { attributes: true, attributeFilter: ['style', 'class'] }); if (bilibiliPlayer) observer.observe(bilibiliPlayer, { attributes: true, attributeFilter: ['style', 'class'] }); // 监听窗口大小变化 window.addEventListener('resize', optimizedResizeHandler); // 页面加载完成后检查 window.addEventListener('load', checkAndApplyStyles); })();