您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
过滤出YouTube直播频道会员的聊天信息。在菜单上点击"Launch"启用。
// ==UserScript== // @name YouTube会员聊天过滤 // @namespace Grefork // @version 1.0.0 // @description 过滤出YouTube直播频道会员的聊天信息。在菜单上点击"Launch"启用。 // @author Grefork // @match *://*.youtube.com/* // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // ==/UserScript== (function() { 'use strict'; if (window.location.pathname !== "/live_chat") { return; } function launch() { const chatMessagesEl = document.querySelector("#chat-messages"); if (!chatMessagesEl) { return; } const itemsEl = document.querySelector( "#items.yt-live-chat-item-list-renderer" ); if (!itemsEl) { return; } const chatEl = document.querySelector("#chat"); if (!itemsEl) { return; } const filterDivEl = document.createElement("div"); filterDivEl.style.flexGrow = 1; filterDivEl.style.flexBasis = 0; filterDivEl.style.overflowY = "auto"; chatMessagesEl.prepend(filterDivEl); const observer = new MutationObserver((mutationsList) => { mutationsList.forEach((rec) => { rec.addedNodes.forEach((node) => { const authorNameEl = node.querySelector("#author-name"); const isMember = node.querySelector(".member"); if (!isMember) { return }; filterDivEl.appendChild(node); while (filterDivEl.children.length > 8) { filterDivEl.children[0].remove(); } }); }); }); observer.observe(itemsEl, { childList: true, }); } const commandId = GM_registerMenuCommand("Launch", () => { launch(); GM_unregisterMenuCommand(commandId); }); window.addEventListener("unload", () => { GM_unregisterMenuCommand(commandId); }); })();