您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
8/17/2023, 1:51:20 AM
// ==UserScript== // @name YouTube: Force Single Column Mode // @namespace UserScripts // @match https://www.youtube.com/* // @grant none // @unwrap // @inject-into page // @version 1.1.1 // @author CY Fung // @description 8/17/2023, 1:51:20 AM // @license MIT // ==/UserScript== (() => { const VIDEO_WH_RATIO_REFERENCE = 16 / 9; // 1.78 const ENABLE_WHEN_CONTENT_OCCUPY_MORE_THAN = 0.2 // 20% or more of other content can be displayed in your browser const insp = o => o ? (o.polymerController || o.inst || o || 0) : (o || 0); let ytPreferredMode = null; // true for two-columns_; min-width of side panel = 380px function getShouldSingleColumn() { if (ytPreferredMode === false) return true; const { clientHeight, clientWidth } = document.documentElement; if (clientHeight > clientWidth) { let referenceVideoHeight = clientWidth / (VIDEO_WH_RATIO_REFERENCE); let belowSpace = clientHeight - referenceVideoHeight; if (belowSpace > -1e-3) { if (belowSpace - ENABLE_WHEN_CONTENT_OCCUPY_MORE_THAN * clientHeight >= -1e-3) { return true; } } } return false; } let isShouldSingleColumn = null; const Promise = (async () => { })().constructor; const { setInterval, clearInterval } = window; if (location.pathname.indexOf('live_chat') >= 0) return; let resizeBusy = false; let resizeQuene = Promise.resolve(); function setIsTwoColumns_(ywf) { if (!ywf) return; const cnt = insp(ywf); const pnt = (cnt.ytdWatchBehavior ? cnt : ywf.ytdWatchBehavior ? ywf : 0) || 0; if (typeof isShouldSingleColumn === 'boolean' && 'isTwoColumns_' in (pnt.ytdWatchBehavior || 0)) { pnt.ytdWatchBehavior.isTwoColumns_ = !isShouldSingleColumn; } } let cid = setInterval.call(window, () => { const ywf = document.querySelector('ytd-watch-flexy'); if (ywf && isShouldSingleColumn === null) { isShouldSingleColumn = getShouldSingleColumn(); Window.prototype.addEventListener.call(window, 'resize', function () { if (resizeBusy) return; resizeBusy = true; const ywf = document.querySelector('ytd-watch-flexy'); resizeQuene = resizeQuene.then(() => { const p = isShouldSingleColumn; isShouldSingleColumn = getShouldSingleColumn(); resizeBusy = false; return isShouldSingleColumn !== p }).then(k => { if (k) setIsTwoColumns_(ywf); }); }, { capture: false, passive: true }); if (isShouldSingleColumn) { ywf.removeAttribute('is-two-columns_'); } else { ywf.setAttribute('is-two-columns_', ''); } const cnt = insp(ywf); const pnt = (cnt.ytdWatchBehavior ? cnt : ywf.ytdWatchBehavior ? ywf : 0) || 0; if (typeof cnt.updateIsTwoColumnsFromBinding === 'function' && ('isTwoColumns_' in (pnt.ytdWatchBehavior || 0))) { cnt.updateIsTwoColumnsFromBinding = function (a) { let b = null; try { b = a.detail.value; } catch (e) { } if (typeof b === 'boolean') ytPreferredMode = b; }; } Promise.resolve(ywf).then(setIsTwoColumns_) clearInterval.call(window, cid); } }, 1); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址