您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
將 YT 某些元素進行隱藏
当前为
- // ==UserScript==
- // @name YT Hide Recom Tool
- // @version 0.0.13
- // @author HentaiSaru
- // @description 將 YT 某些元素進行隱藏
- // @icon https://cdn-icons-png.flaticon.com/512/1383/1383260.png
- // @run-at document-end
- // @match *://www.youtube.com/*
- // @license MIT
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_addStyle
- // @grant GM_registerMenuCommand
- // @namespace https://greasyfork.org/users/989635
- // ==/UserScript==
- /*
- Original Author Page : [https://github.com/hoothin/]
- Original Author Link : [https://greasyfork.org/zh-TW/scripts/438403-youtube-hide-related-suggestion-which-occlude-the-video]
- */
- (function() {
- var currentUrl = window.location.href;
- let pattern = /^https:\/\/www\.youtube\.com\/.+$/;
- // 在首頁不會載入以下方法
- if (pattern.test(currentUrl)) {
- // 為推薦卡添加 css 樣式
- let css = `
- .ytp-ce-element{opacity: 0.1!important;}
- .ytp-ce-element:hover{opacity: 1!important;}
- `;
- if (typeof GM_addStyle !== "undefined") {
- GM_addStyle(css);
- } else {
- let ElementNode = document.createElement("style");
- ElementNode.appendChild(document.createTextNode(css));
- (document.querySelector("head") || document.documentElement).appendChild(ElementNode);
- }
- /* -------------------------------------------- */
- const Menu = GM_registerMenuCommand(
- "📜 [功能說明]",
- function() {
- alert(
- "功能失效時 [請重新整理] !!\n\n(Shift) : 完全隱藏影片尾部推薦\n(Alt + 1) : 隱藏右側影片推薦\n(Alt + 2) : 隱藏留言區\n(Alt + 3) : 隱藏功能選項\n(Alt + 4) : 隱藏播放清單資訊\n(Ctrl + Z) : 使用極簡化"
- );
- }
- );/* -------------------------------------------- */
- // 隱藏判斷
- function HideJudgment(element, gm="") {
- if (element.style.display === "none") {
- element.style.display = "block";
- if (gm !== "") {GM_setValue(gm, false);}
- } else {
- element.style.display = "none";
- if (gm !== "") {GM_setValue(gm, true);}
- }
- }
- function SetTrigger(element) {
- element.style.display = "none";
- return new Promise(resolve => {
- setTimeout(function() {
- if (element.style.display === "none") {
- resolve(true);
- } else {
- resolve(false);
- }
- }, 300);
- });
- }
- async function runAsync() {
- // 監聽快捷鍵
- document.addEventListener("keydown", function(event) {
- if (event.shiftKey) {
- event.preventDefault();
- let elements = document.querySelectorAll(".ytp-ce-element, .ytp-ce-covering");
- elements.forEach(function(element) {
- HideJudgment(element);
- });
- } else if (event.ctrlKey && event.key === "z") {
- event.preventDefault();
- let UserMenu = document.getElementById("end");
- let Message = document.getElementById("below");
- let RecommViewing = document.getElementById("secondary");
- if (GM_getValue("極簡化", [])) {
- UserMenu.style.display = "block";
- Message.style.display = "block";
- RecommViewing.style.display = "block";
- GM_setValue("極簡化", false);
- } else {
- UserMenu.style.display = "none";
- Message.style.display = "none";
- RecommViewing.style.display = "none";
- GM_setValue("極簡化", true);
- }
- } else if (event.altKey && event.key === "1") {
- event.preventDefault();
- let element = document.getElementById("secondary");
- HideJudgment(element, "Trigger_1");
- } else if (event.altKey && event.key === "2") {
- event.preventDefault();
- let element = document.getElementById("comments");
- HideJudgment(element, "Trigger_2");
- } else if (event.altKey && event.key === "3") {
- event.preventDefault();
- let element = document.getElementById("menu-container");
- HideJudgment(element, "Trigger_3");
- } else if (event.altKey && event.key === "4") {
- event.preventDefault();
- let element = document.querySelector("#page-manager > ytd-browse > ytd-playlist-header-renderer > div");
- HideJudgment(element, "Trigger_4");
- }
- });
- // 判斷在播放頁面運行
- let VVP_Pattern = /^https:\/\/www\.youtube\.com\/watch\?v=.+$/;
- // 判斷在播放清單運行
- let Playlist_Pattern = /^https:\/\/www\.youtube\.com\/playlist\?list=.+$/;
- if (VVP_Pattern.test(currentUrl)) {
- if (GM_getValue("極簡化", [])) {
- let interval;
- interval = setInterval(function() {
- let UserMenu = document.getElementById("end");
- let Message = document.getElementById("below");
- let RecommViewing = document.getElementById("secondary");
- if (UserMenu && Message && RecommViewing) {
- Promise.all([SetTrigger(UserMenu), SetTrigger(Message), SetTrigger(RecommViewing)]).then(results => {
- if (results[0] && results[1] && results[2]) {
- clearInterval(interval);
- return;
- }
- });
- }
- }, 1000);
- }
- if (GM_getValue("Trigger_1", [])){
- let interval;
- interval = setInterval(function() {
- let element = document.getElementById("secondary");
- if (element) {
- SetTrigger(element).then(result => {
- clearInterval(interval);
- });
- }
- }, 1000);
- }
- if (GM_getValue("Trigger_2", [])){
- let interval;
- interval = setInterval(function() {
- let element = document.getElementById("comments");
- if (element) {
- SetTrigger(element).then(result => {
- clearInterval(interval);
- });
- }
- }, 1000);
- }
- if (GM_getValue("Trigger_3", [])){
- let interval;
- interval = setInterval(function() {
- let element = document.getElementById("menu-container");
- if (element) {
- SetTrigger(element).then(result => {
- clearInterval(interval);
- });
- }
- }, 1000);
- }
- } else if (Playlist_Pattern.test(currentUrl)) {
- if (GM_getValue("Trigger_4", [])){
- let interval;
- interval = setInterval(function() {
- let element = document.querySelector("#page-manager > ytd-browse > ytd-playlist-header-renderer > div");
- if (element) {
- SetTrigger(element).then(result => {
- clearInterval(interval);
- });
- }
- }, 1000);
- }
- }
- }
- // 異步運行
- runAsync();
- }
- })();