CHZZK - 넓은 화면 자동 선택

치지직 넓은 화면 자동 선택

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         CHZZK - 넓은 화면 자동 선택
// @icon         https://play-lh.googleusercontent.com/wvo3IB5dTJHyjpIHvkdzpgbFnG3LoVsqKdQ7W3IoRm-EVzISMz9tTaIYoRdZm1phL_8
// @namespace    http://tampermonkey.net/
// @license      MIT
// @author       maplestudy
// @version      1.0
// @match        *://*.chzzk.naver.com/*
// @description  치지직 넓은 화면 자동 선택
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    let firstRun = true;

    function triggerClick(element) {
        if (element) {
            element.click();

            let event = new MouseEvent('click', {
                bubbles: true,
                cancelable: true,
                view: window
            });
            element.dispatchEvent(event);
        }
    }

    function enableWideScreen() {
        let wideButton = document.querySelector('.pzp-viewmode-button');
        if (!wideButton) return;

        // 이미 넓은 화면 모드인지 확인 (aria-label 또는 클래스로 체크)
        let isWideMode = wideButton.classList.contains('pzp-viewmode-button--active') ||
                         wideButton.getAttribute('aria-pressed') === 'true';

        // 넓은 화면이 아닐 때만 클릭
        if (!isWideMode) {
            triggerClick(wideButton);
        }
    }

    function initWideScreen() {
        let delay = firstRun ? 1500 : 500; // 첫 진입: 1.5초, 이후: 0.5초
        firstRun = false;

        setTimeout(() => {
            let wideButton = document.querySelector('.pzp-viewmode-button');
            if (wideButton) {
                enableWideScreen();
            } else {
                // 버튼이 없으면 감지 대기
                let observer = new MutationObserver((mutations, obs) => {
                    let wideButton = document.querySelector('.pzp-viewmode-button');
                    if (wideButton) {
                        enableWideScreen();
                        obs.disconnect();
                    }
                });

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

    function observeUrlChange(callback) {
        let lastUrl = location.href;
        new MutationObserver(() => {
            const currentUrl = location.href;
            if (currentUrl !== lastUrl) {
                lastUrl = currentUrl;
                if (currentUrl.includes('/live/')) {
                    callback();
                }
            }
        }).observe(document, { childList: true, subtree: true });

        window.addEventListener('popstate', () => {
            const currentUrl = location.href;
            if (currentUrl !== lastUrl) {
                lastUrl = currentUrl;
                if (currentUrl.includes('/live/')) {
                    callback();
                }
            }
        });
    }

    // URL이 /live/로 시작하는 경우에만 실행
    if (location.href.includes('/live/')) {
        initWideScreen();
    }
    observeUrlChange(initWideScreen);
})();