您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Helps whitelist YouTube channels in uBlock Origin
// ==UserScript== // @name YouTube Channel Whitelister // @namespace https://tekno.pw // @author teknogeek // @description Helps whitelist YouTube channels in uBlock Origin // @include http://*.youtube.com/* // @include https://*.youtube.com/* // @version 2.2 // @grant none // @license http://creativecommons.org/licenses/by-sa/4.0/ // ==/UserScript== function setChannelName(elem) { // use regex to get the channel name or user ID from the element data (thanks @Google for the __data__ :D) var channelID = elem.__data__.data.owner.videoOwnerRenderer.navigationEndpoint.browseEndpoint.canonicalBaseUrl; channelID = channelID.match(/\/(?:user|channel)\/(.*)/); if(channelID !== null) { // check that the channel ID hasn't been added to the URL already if(location.href.search('&user=') == -1) { // if not, add it now history.pushState({}, null, `${location.href}&user=${channelID[1]}`); window.location.reload(); } } } // add an observer to the page that will wait for dynamic page updates in order to properly work when a video is being loaded by JS var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.addedNodes !== null) { for (var i = 0; i < mutation.addedNodes.length; i++) { var elem = mutation.addedNodes[i]; if(elem !== undefined && elem.tagName !== undefined) { var elemTag = elem.tagName.toLowerCase(); if(elemTag == 'ytd-video-secondary-info-renderer') { setChannelName(elem); } } } } }); }); // add the observer to the document body observer.observe(document.body, {childList: true, subtree: true});