YouTube 评论与推荐列表位置互换

评论与推荐列表位置互换。

// ==UserScript==
// @name                    YouTube Comments and recommendation list locations exchanged
// @name:zh-TW              YouTube 评论与推荐列表位置互换
// @name:zh-CN              YouTube 评论与推荐列表位置互换
// @icon                    https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @author                  devret
// @namespace               devret_youtube_exchanged_squared_namespace
// @version                 0.1.1
// @match                   *://www.youtube.com/*
// @exclude                 *://www.youtube.com/live_chat*
// @grant                   none
// @run-at                  document-idle
// @inject-into             page
// @license                 MIT
// @description             Comments and recommendation list locations exchanged.
// @description:zh-TW       评论与推荐列表位置互换。
// @description:zh-CN       评论与推荐列表位置互换。
// ==/UserScript==

/*jshint esversion: 11 */

(function () {

    function setMaxHeight() {
        const secondary = document.getElementById('secondary');
        const windowHeight = window.innerHeight;
        const offsetTop = secondary.getBoundingClientRect().top;
        secondary.style.height = `${windowHeight - offsetTop}px`;
        secondary.style.overflowY = 'auto';
    }
    function exchanged(){
         const observer = new MutationObserver((mutations) => {
             const sections = document.getElementById('comments');
             const secondary = document.getElementById('secondary');
             const secondaryInner = document.getElementById('secondary-inner');
             const primary = document.getElementById('primary');

             if (sections && secondary) {
                 secondary.appendChild(sections);
                 primary.appendChild(secondaryInner);
                 setMaxHeight();
                 observer.disconnect();
             }
         });

        observer.observe(document.body, {
            childList: true,
            subtree: true,
        });

        const initialSections = document.getElementById('comments');
        const initialSecondary = document.getElementById('secondary');
        const initialSecondaryInner = document.getElementById('secondary-inner');
        const initialPrimary = document.getElementById('secondary-inner');
        if (initialSections && initialSecondary && initialSecondaryInner && initialPrimary) {
            initialSecondary.appendChild(initialSections);
            initialPrimary.appendChild(initialSecondaryInner);
            setMaxHeight();
            observer.disconnect();
        }

    }

    function initialize() {
        exchanged();
        window.addEventListener('load', setMaxHeight);
        window.addEventListener('resize', setMaxHeight);
    }


    initialize();
})();