您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Put YouTube in focus mode! Hides all unasked for content (recommendations, subscriptions, related, videowall, etc.) on the home and watch pages.
当前为
// ==UserScript== // @name YouTube Focus Mode // @namespace http://tampermonkey.net/ // @version 1.0.2 // @description Put YouTube in focus mode! Hides all unasked for content (recommendations, subscriptions, related, videowall, etc.) on the home and watch pages. // @author EmeraldSlash // @match *://*.youtube.com/* // @grant none // ==/UserScript== (function() { 'use strict'; // css selectors and enable states for various features of this script // delete home page feed const HOME_PAGE_FEED = ["ytd-section-list-renderer[page-subtype='home']", true]; // auto focus search bar when home page feed deleted const HOME_PAGE_SEARCH_BAR = ["input#search", true]; // delete related feed on watch page const WATCH_PAGE_RELATED = ["ytd-compact-video-renderer.ytd-watch-next-secondary-results-renderer:not([expansion='collapsed']).ytd-watch-next-secondary-results-renderer", true]; // delete the related feed's continuations element which is what handles infinite scroll const WATCH_PAGE_CONTINUATION = ["#continuations.style-scope.ytd-watch-next-secondary-results-renderer", true]; // delete the video wall that shows within the player when a video finishes const WATCH_PAGE_VIDEOWALL = [".ytp-endscreen-content", true]; // import library for detecting added elements // insertion-query v1.0.3 (2016-01-20) // license:MIT // Zbyszek Tenerowicz <[email protected]> (http://naugtur.pl/) var insertionQ=function(){"use strict";function a(a,b){var d,e="insQ_"+g++,f=function(a){(a.animationName===e||a[i]===e)&&(c(a.target)||b(a.target))};d=document.createElement("style"),d.innerHTML="@"+j+"keyframes "+e+" { from { outline: 1px solid transparent } to { outline: 0px solid transparent } }\n"+a+" { animation-duration: 0.001s; animation-name: "+e+"; "+j+"animation-duration: 0.001s; "+j+"animation-name: "+e+"; } ",document.head.appendChild(d);var h=setTimeout(function(){document.addEventListener("animationstart",f,!1),document.addEventListener("MSAnimationStart",f,!1),document.addEventListener("webkitAnimationStart",f,!1)},n.timeout);return{destroy:function(){clearTimeout(h),d&&(document.head.removeChild(d),d=null),document.removeEventListener("animationstart",f),document.removeEventListener("MSAnimationStart",f),document.removeEventListener("webkitAnimationStart",f)}}}function b(a){a.QinsQ=!0}function c(a){return n.strictlyNew&&a.QinsQ===!0}function d(a){return c(a.parentNode)?a:d(a.parentNode)}function e(a){for(b(a),a=a.firstChild;a;a=a.nextSibling)void 0!==a&&1===a.nodeType&&e(a)}function f(f,g){var h=[],i=function(){var a;return function(){clearTimeout(a),a=setTimeout(function(){h.forEach(e),g(h),h=[]},10)}}();return a(f,function(a){if(!c(a)){b(a);var e=d(a);h.indexOf(e)<0&&h.push(e),i()}})}var g=100,h=!1,i="animationName",j="",k="Webkit Moz O ms Khtml".split(" "),l="",m=document.createElement("div"),n={strictlyNew:!0,timeout:20};if(m.style.animationName&&(h=!0),h===!1)for(var o=0;o<k.length;o++)if(void 0!==m.style[k[o]+"AnimationName"]){l=k[o],i=l+"AnimationName",j="-"+l.toLowerCase()+"-",h=!0;break}var p=function(b){return h&&b.match(/[^{}]/)?(n.strictlyNew&&e(document.body),{every:function(c){return a(b,c)},summary:function(a){return f(b,a)}}):!1};return p.config=function(a){for(var b in a)a.hasOwnProperty(b)&&(n[b]=a[b])},p}(); // update function that gets called everytime a new page loads // mostly redundant because of insertionQ? only relevant on fresh page loads & for search bar focusing function update() { // remove homepage feed if (HOME_PAGE_FEED[1]) { let result = document.querySelectorAll(HOME_PAGE_FEED[0]); if (result.length > 0) { result[0].remove(); // focus search bar if homepage feed was removed if (HOME_PAGE_SEARCH_BAR[1]) { let search = document.querySelector(HOME_PAGE_SEARCH_BAR[0]); if (search) { search.focus(); } } } } // remove related section on watch page if (WATCH_PAGE_RELATED[1]) { let result = document.querySelectorAll(WATCH_PAGE_RELATED[1]); if (WATCH_PAGE_CONTINUATION[1]) { result = [...result, ...document.querySelectorAll(WATCH_PAGE_CONTINUATION[0])]; } if (WATCH_PAGE_VIDEOWALL[1]) { result = [...result, ...document.querySelectorAll(WATCH_PAGE_VIDEOWALL[0])]; } if (result.length > 0) { for (let i = 0; i < result.length; i++) { result[i].remove() } } } } // page change and element added listeners document.addEventListener('yt-navigate-finish', update); // remove related section on watch page and infinite scroll element if (WATCH_PAGE_RELATED[1]) { insertionQ(WATCH_PAGE_RELATED[0]).every(function(element) { element.remove() }) if (WATCH_PAGE_CONTINUATION[1]) { insertionQ(WATCH_PAGE_CONTINUATION[0]).every(function(element) { element.remove() }) } if (WATCH_PAGE_VIDEOWALL[1]) { insertionQ(WATCH_PAGE_VIDEOWALL[0]).every(function(element) { element.remove() }) } } // call initial update update() })();