您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Moves comments to the right side and adds a button to toggle between comments and recommended videos
当前为
// ==UserScript== // @name Show YouTube comments while watching 2025 // @description Moves comments to the right side and adds a button to toggle between comments and recommended videos // @version 3.3 // @author barn852 & Eloren1 // @license MIT // @match *://*.youtube.com/* // @include *://*.youtube.com/watch* // @grant none // @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js // @run-at document-end // @noframes // @namespace https://greasyfork.org/users/572660 // ==/UserScript== (function() { 'use strict'; let showComments = true; // Show comments by default const moveComments = () => { let comments = document.getElementById('comments'); let sidebar = document.querySelector('#secondary-inner'); if (comments && sidebar && !sidebar.contains(comments)) { sidebar.appendChild(comments); console.log('Moved comments to the right side'); } }; const updateView = () => { let comments = document.getElementById('comments'); let related = document.getElementById('related'); if (comments && related) { comments.style.visibility = 'visible'; comments.style.pointerEvents = 'auto'; comments.style.position = 'static'; related.style.visibility = 'hidden'; related.style.pointerEvents = 'none'; related.style.position = 'absolute'; } }; const toggleView = () => { let comments = document.getElementById('comments'); let related = document.getElementById('related'); if (comments && related) { showComments = !showComments; comments.style.visibility = showComments ? 'visible' : 'hidden'; comments.style.pointerEvents = showComments ? 'auto' : 'none'; comments.style.position = showComments ? 'static' : 'absolute'; related.style.visibility = showComments ? 'hidden' : 'visible'; related.style.pointerEvents = showComments ? 'none' : 'auto'; related.style.position = showComments ? 'absolute' : 'static'; } }; const observer = new MutationObserver(() => { moveComments(); updateView(); }); observer.observe(document.body, { childList: true, subtree: true }); let button = document.createElement('button'); button.innerHTML = '<svg width="24" height="24" viewBox="0 0 22 22"><g fill="currentColor"><path d="M4 14h4v-4H4v4zm0 5h4v-4H4v4zM4 9h4V5H4v4zm5 5h12v-4H9v4zm0 5h12v-4H9v4zM9 5v4h12V5H9z"/></g></svg>'; button.style = 'background: transparent; border: 0; color: rgb(96,96,96); outline: 0; cursor: pointer; padding: 5px 10px;'; button.onclick = toggleView; let waitButton = setInterval(() => { let menu = document.getElementById('end'); if (menu) { clearInterval(waitButton); menu.insertBefore(button, menu.lastElementChild); updateView(); } }, 500); })();