您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
將聊天室與直播位置切換
// ==UserScript== // @name Youtube Interface Modification // @namespace https://github.com/RutsuLun // @version 1.7 // @description 將聊天室與直播位置切換 // @author Rutsu Lun // @match https://www.youtube.com/* // @icon https://www.google.com/s2/favicons?domain=youtube.com // @license Only Share // @grant GM.registerMenuCommand // ==/UserScript== (function () { GM.registerMenuCommand('呼叫', Lun_createBtnList); GM.registerMenuCommand('介面', Lun_loayoutSwitch); GM.registerMenuCommand('emoji調整', Lun_removeEmojiTag); GM.registerMenuCommand('移除愛心', hideShitHard); // GM.registerMenuCommand('表符', Lun_emojiMenuChenge); })(); const btnListSetting = [ { id: 'Lun_loayoutSwitch', name: '介面', method: Lun_loayoutSwitch, }, { id: 'Lun_emojiMenuChenge', name: '表符', method: Lun_removeEmojiTag, }, { id: 'Lun_emojiMenuChenge', name: '移除愛心', method: hideShitHard, }, ] const btnListCss = 'position: absolute;top: 0;left: 0;' function Lun_loayoutSwitch() { document.getElementById('columns').style.cssText == '' ? document.getElementById('columns').style.cssText = 'flex-direction: row-reverse;' : document.getElementById('columns').style.cssText = ''; document.querySelector('ytd-player').style.cssText += 'border-radius: 0;' } function Lun_removeEmojiTag() { const iframe = document.getElementById('chatframe'); if (iframe.contentDocument) { var iframeDocument = iframe.contentDocument; var category = iframeDocument.getElementById('category-buttons'); var search = iframeDocument.getElementById('search-panel'); var emoji = iframeDocument.querySelector('yt-emoji-picker-renderer'); category.style.cssText += 'display:none;' search.style.cssText += 'display:none;' emoji.style.cssText += 'margin: -5px -24px !important' } } function Lun_emojiMenuChenge() { const iframe = document.getElementById('chatframe'); if (iframe.contentDocument) { var iframeDocument = iframe.contentDocument; var targetElement = iframeDocument.querySelector('yt-emoji-picker-renderer[floating-emoji-picker]'); targetElement.style.cssText = 'min-height: 400px'; } } function hideShitHard() { const iframe = document.getElementById('chatframe'); if (iframe.contentDocument) { var iframeDocument = iframe.contentDocument; var targetElement = iframeDocument.querySelector('#reaction-control-panel'); targetElement.style.cssText = 'display:none;' } } function Lun_createBtnList() { const chat = document.getElementById('secondary'); if (chat && document.querySelector('Lun_btnList') == null) { const btnList = document.createElement('span'); btnList.id = 'Lun_btnList'; btnList.style = btnListCss; chat.append(btnList); btnListSetting.forEach(b => { let btn = document.createElement('button'); btn.id = b.id; btn.innerText = b.name; btnList.append(btn); btn.addEventListener('click', b.method); }); } } const main = function () { // Lun_emojiMenuChenge(); console.log('載入完畢'); Lun_createBtnList(); } const injectScript = function (frameWindow) { main() } const retrieveChatFrameWindow = function () { if (window.location.pathname === "/live_chat" || window.location.pathname === "/live_chat_replay") return window; for (let i = 0; i < window.frames.length; i++) { try { if (window.frames[i].location) { let pathname = window.frames[i].location.pathname; if (pathname === "/live_chat" || pathname === "/live_chat_replay") return frames[i]; } } catch (ex) { } } } const tryBrowserIndependentExecution = function () { let destinationFrameWindow = retrieveChatFrameWindow(); if (!destinationFrameWindow || !destinationFrameWindow.document || destinationFrameWindow.document.readyState != "complete") { setTimeout(tryBrowserIndependentExecution, 1000); return; } if (destinationFrameWindow.channelResolverInitialized) return; injectScript(destinationFrameWindow); destinationFrameWindow.channelResolverInitialized = true; } const getPopup = () => { let pop = document.querySelector('ytd-popup-container') if (pop == null) { setTimeout(getPopup, 1000); console.log(pop) } else { pop.remove(); } } if (ytInitialPlayerResponse.videoDetails.isLiveContent) { console.log('直播') tryBrowserIndependentExecution(); } else { console.log('正常影片') }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址