您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This script was based on YouTube Web Tweaks lite but converted into ultimate package (which includes both Action Buttons Fix and other stuff from the force rounded corners scripts)
// ==UserScript== // @name YouTube Web Tweaks ultimate edition // @version 2025.08.30 // @description This script was based on YouTube Web Tweaks lite but converted into ultimate package (which includes both Action Buttons Fix and other stuff from the force rounded corners scripts) // @author Joey_JTS // @license MIT // @match *://www.youtube.com/* // @match *://www.youtube-nocookie.com/* // @match *://www.youtu.be/* // @namespace https://greasyfork.org/en/users/761382 // @icon https://www.youtube.com/favicon.ico // @unwrap // @run-at document-end // @unwrap // @grant none // ==/UserScript== // Enable strict mode to catch common coding mistakes "use strict"; // Define the flags to assign to the EXPERIMENT_FLAGS object const flagsToAssign = { // Standard tweaks (YT config editor + Disable animations) IS_TABLET: true, DISABLE_YT_IMG_DELAY_LOADING: true, polymer_verifiy_app_state: false, desktop_delay_player_resizing: false, web_animated_actions: false, web_animated_like: false, web_animated_like_lazy_load: false, render_unicode_emojis_as_small_images: true, smartimation_background: false, kevlar_refresh_on_theme_change: false, // Disable cinematics (aka ambient lighting) kevlar_measure_ambient_mode_idle: false, kevlar_watch_cinematics_invisible: false, web_cinematic_theater_mode: false, web_cinematic_fullscreen: false, enable_cinematic_blur_desktop_loading: false, kevlar_watch_cinematics: false, web_cinematic_masthead: false, web_watch_cinematics_preferred_reduced_motion_default_disabled: false }; const updateFlags = () => { // Check if the EXPERIMENT_FLAGS object exists in the window.yt.config_ property chain const expFlags = window?.yt?.config_?.EXPERIMENT_FLAGS; // If EXPERIMENT_FLAGS is not found, exit the function if (!expFlags) return; // Assign the defined flags to the EXPERIMENT_FLAGS object Object.assign(expFlags, flagsToAssign); }; // Create a MutationObserver that calls the updateFlags function when changes occur in the document's subtree const mutationObserver = new MutationObserver(updateFlags); mutationObserver.observe(document, { subtree: true, childList: true }); (function() { let css = ` /* Remove all annoyances (including 'shorts' section) */ ytd-merch-shelf-renderer, ytd-action-companion-ad-renderer, ytd-display-ad-renderer, ytd-video-masthead-ad-advertiser-info-renderer, ytd-video-masthead-ad-primary-video-renderer, ytd-in-feed-ad-layout-renderer, ytd-ad-slot-renderer, ytd-statement-banner-renderer, ytd-banner-promo-renderer-background, ytd-ad-slot-renderer, ytd-in-feed-ad-layout-renderer, .ytwPanelAdHeaderImageLockupViewModelHost, ytd-ads-engagement-panel-content-renderer, #content.ytd-ads-engagement-panel-content-renderer, ytd-engagement-panel-section-list-renderer[target-id="engagement-panel-ads"], ytd-rich-item-renderer:has(> #content > ytd-ad-slot-renderer), .ytd-video-masthead-ad-v3-renderer, div#root.style-scope.ytd-display-ad-renderer.yt-simple-endpoint, div#sparkles-container.style-scope.ytd-promoted-sparkles-web-renderer, div#main-container.style-scope.ytd-promoted-video-renderer, div#player-ads.style-scope.ytd-watch-flexy, #clarify-box, yt-about-this-ad-renderer, masthead-ad, ad-slot-renderer, yt-mealbar-promo-renderer, statement-banner-style-type-compact, ytm-promoted-sparkles-web-renderer, tp-yt-iron-overlay-backdrop, #masthead-ad, #expandable-metadata, .ytGridShelfViewModelHost, .ytd-search ytd-shelf-renderer, ytd-reel-shelf-renderer, ytd-rich-section-renderer { display: none !important } .style-scope[page-subtype='channels'] ytd-shelf-renderer, .style-scope[page-subtype='channels'] ytm-shelf-renderer { display: block !important } /* Watch page tweaks (including CSS for 'action buttons fix') */ #comment-teaser, teaser-carousel { display: none !important } ytd-horizontal-card-list-renderer[modern-chapters][card-list-style=HORIZONTAL_CARD_LIST_STYLE_TYPE_ENGAGEMENT_PANEL_SECTION], ytd-video-description-infocards-section-renderer.style-scope.ytd-structured-description-content-renderer > #header.ytd-video-description-infocards-section-renderer, ytd-video-description-infocards-section-renderer.style-scope.ytd-structured-description-content-renderer > #action-buttons.ytd-video-description-infocards-section-renderer, #social-links.ytd-video-description-infocards-section-renderer { display: none !important } ytd-video-description-infocards-section-renderer.style-scope.ytd-structured-description-content-renderer { border-top: 0 !important } #paid-comment-images, #paid-comment-chip > .yt-pdg-comment-chip-renderer.style-scope, #paid-comment-background { display: none !important } #actions.ytd-watch-metadata { min-width: auto !important } yt-button-view-model.ytd-menu-renderer .yt-spec-button-shape-next--size-m, ytd-download-button-renderer .yt-spec-button-shape-next--size-m, .yt-spec-button-shape-next--size-m[aria-label="Promote"], #loop-button > .yt-spec-button-shape-next--size-m { margin-left: 8px !important } #flexible-item-buttons .ytd-menu-renderer, #top-level-buttons-computed yt-button-view-model.ytd-menu-renderer, ytd-button-renderer#loop-button { margin-left: 0 !important } .yt-spec-button-shape-next--size-m[aria-label="Promote"], #flexible-item-buttons [aria-label="Promote"] { display: none !important } .yt-spec-button-shape-next--size-m[aria-label="Ask"], #flexible-item-buttons [aria-label="Ask"] { display: none !important } ytd-watch-metadata.ytd-watch-flexy { padding-bottom: 36px !important } .html5-endscreen.ytp-player-content.videowall-endscreen.ytp-show-tiles { display: none !important } #related ytd-compact-video-renderer, ytd-compact-movie-renderer, #related ytd-compact-playlist-renderer, #related ytd-compact-radio-renderer, #related yt-lockup-view-model, #related ytd-channel-renderer, ytd-watch-flexy ytd-reel-shelf-renderer, ytd-watch-flexy ytd-rich-section-renderer, #related ytd-continuation-item-renderer, #related #continuations { display: none !important } #related yt-lockup-view-model:nth-of-type(1), #related yt-lockup-view-model:nth-of-type(2), #related yt-lockup-view-model:nth-of-type(3), #related yt-lockup-view-model:nth-of-type(4), #related yt-lockup-view-model:nth-of-type(5), #related yt-lockup-view-model:nth-of-type(6), #secondary #related yt-lockup-view-model:nth-of-type(7), #secondary #related yt-lockup-view-model:nth-of-type(8), #secondary #related yt-lockup-view-model:nth-of-type(9) { display: flex !important } /* More tweaks */ #channel-header-links.style-scope.ytd-c4-tabbed-header-renderer, .page-header-view-model-wiz__page-header-attribution, .yt-page-header-view-model__page-header-attribution { display: none !important } #chip-bar.style-scope.ytd-search-header-renderer, [page-subtype="playlist"] ytd-feed-filter-chip-bar-renderer { display: none !important } ytd-search-header-renderer .yt-spec-button-shape-next--size-m { flex-direction: row-reverse } ytd-search-header-renderer .yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--icon-trailing .yt-spec-button-shape-next__icon { margin-left: -6px; margin-right: 6px } [is-search] ytd-shelf-renderer.ytd-item-section-renderer:not(ytd-channel-renderer + ytd-shelf-renderer), [is-search] ytd-horizontal-card-list-renderer.ytd-item-section-renderer:not(:first-child), [is-search] ytd-exploratory-results-renderer.ytd-item-section-renderer { display: none !important } ytd-guide-entry-renderer > a[href*="/channel/UCtFRv9O2AHqOZjjynzrv-xg"], ytd-guide-entry-renderer > a[href*="/feed/courses_destination"], ytd-guide-entry-renderer > a[href*="/channel/UCrpQ4p1Ql_hG8rKXIKM1MOQ"], ytd-guide-entry-renderer > a[href*="/channel/UCkYQyvc_i9hXEo4xic9Hh2g"], ytd-guide-entry-renderer > a[href*="/podcasts"], ytd-guide-entry-renderer > a[href*="/feed/podcasts"] { display: none !important } ytd-download-button-renderer, ytd-guide-entry-renderer > a[href*="/feed/downloads"], ytd-mini-guide-entry-renderer > a[href*="/feed/downloads"] { display: none !important } #footer.style-scope.ytd-guide-renderer { display: none !important }`; if (typeof GM_addStyle !== "undefined") { GM_addStyle(css); } else { let styleNode = document.createElement("style"); styleNode.appendChild(document.createTextNode(css)); (document.querySelector("head") || document.documentElement).appendChild(styleNode); } })(); // Force h264-only codec and disables WebGL script codes var mse = window.MediaSource; if (mse){ // Set up replacement for MediaSource type support function var nativeITS = mse.isTypeSupported.bind(mse); mse.isTypeSupported = ourITS(nativeITS); } // Here's the replacement function ourITS(fallback){ // type is a string (hopefully!) sent by the page return function (type) { if (type === undefined) return ''; // We only reject VP9 if (type.toLowerCase().indexOf('vp9') > -1) return ''; if (type.toLowerCase().indexOf('vp09') > -1) return ''; // Added 12/20/2019 // Let Firefox handle everything else return fallback(type); }; } // // What is this userscript trying to address? // When playing a video, only a small part of the video loads, and the subsequent // parts do not load afterward. (function () { "use strict"; const originalGetContext = HTMLCanvasElement.prototype.getContext; HTMLCanvasElement.prototype.getContext = function (contextType) { if (contextType === "webgl" || contextType === "webgl2") { console.log("WebGL is disabled by Tampermonkey"); return null; } return originalGetContext.apply(this, arguments); }; })(); /* Add action buttons fix code */ const abtnconfig = { unsegmentLikeButton: false, noFlexibleItems: true }; function updateBtns() { var watchFlexy = document.querySelector("ytd-watch-flexy"); var results = watchFlexy.data.contents.twoColumnWatchNextResults.results.results.contents; for (var i = 0; i < results.length; i++) { if (results[i].videoPrimaryInfoRenderer) { var actions = results[i].videoPrimaryInfoRenderer.videoActions.menuRenderer; if (abtnconfig.unsegmentLikeButton) { if (actions.topLevelButtons[0].segmentedLikeDislikeButtonRenderer) { var segmented = actions.topLevelButtons[0].segmentedLikeDislikeButtonRenderer; actions.topLevelButtons.splice(0, 1); actions.topLevelButtons.unshift(segmented.dislikeButton); actions.topLevelButtons.unshift(segmented.likeButton); } } if (abtnconfig.noFlexibleItems) { for (var i = 0; i < actions.flexibleItems.length; i++) { actions.topLevelButtons.push(actions.flexibleItems[i].menuFlexibleItemRenderer.topLevelButton); } delete actions.flexibleItems } } } var temp = watchFlexy.data; watchFlexy.data = {}; watchFlexy.data = temp; } document.addEventListener("yt-page-data-updated", (e) => { if (e.detail.pageType == "watch") { updateBtns(); } });