您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Dynamically hiding blocked users' chats in Youtube live. Youtubeのライブでブロック済みのユーザのチャットを動的に非表示に変更
// ==UserScript== // @name Hide blocked user in Youtube Live // @namespace https://twitter.com/rin_jugatla // @version 0.2.1 // @description Dynamically hiding blocked users' chats in Youtube live. Youtubeのライブでブロック済みのユーザのチャットを動的に非表示に変更 // @author rin_jugatla // @match https://www.youtube.com/* // @grant none // ==/UserScript== // ブロックしたユーザの確認 // https://myaccount.google.com/blocklist // 【Javascript】XPathを使う(document.evaluate) // https://www.softel.co.jp/blogs/tech/archives/2067 document.getElementsByXPath = function (expression, parentElement) { var r = [] var x = document.evaluate(expression, parentElement || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null) for (var i = 0, l = x.snapshotLength; i < l; i++) { r.push(x.snapshotItem(i)) } return r } // ページの読み込み完了後処理 window.addEventListener('load', function () { function hideAny() { hideBlockedUser(); hideCard(); } function hideBlockedUser() { // 非表示でないブロック済みのメッセージのみ取得するXPath var targetsXPath = '//yt-live-chat-text-message-renderer[@class="style-scope yt-live-chat-item-list-renderer" and not(@style="display: none;")]/div[@id="content"]/span[@id="deleted-state" and not(text() = "")]'; var targets = document.getElementsByXPath(targetsXPath); for(var i = 0; i < targets.length; i++) { targets[i].parentElement.parentElement.style = "display: none;"; } } function hideCard(){ // 非表示でないチャットガイドラインカードを取得するXPath // 「チャットへようこそ!ご自身のプライバシーを守るとともに、YouTube のコミュニティ ガイドラインを遵守することを忘れないでください。」 var targetsXPath = '//yt-live-chat-viewer-engagement-message-renderer[@class="style-scope yt-live-chat-item-list-renderer" and not(@style="display: none;")]'; var targets = document.getElementsByXPath(targetsXPath); for(var i = 0; i < targets.length; i++) { targets[i].style = "display: none;"; } } // フック var mo = new MutationObserver(hideAny); var watchTree = document.getElementsByXPath('//div[@id="items" and @class="style-scope yt-live-chat-item-list-renderer"]')[0] mo.observe(watchTree, { childList: true }); }, false);