動畫瘋彈幕列表隱藏、連動關閉彈幕

網站上添加按鈕來隱藏列表和關閉彈幕 反之則開啟

// ==UserScript==
// @name         動畫瘋彈幕列表隱藏、連動關閉彈幕
// @namespace    yournamespace
// @version      1.0
// @description  網站上添加按鈕來隱藏列表和關閉彈幕 反之則開啟
// @match        *://ani.gamer.com.tw/animeVideo.php?sn=*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 創建按鈕元素
    var button = document.createElement('button');
    button.className = 'refresh';
    button.style.position = 'absolute';
    button.style.top = '8px';
    button.style.left = 'calc(285px)';
    button.style.width = '44px';
    button.style.height = '44px';
    button.style.border = '1px solid var(--anime-primary-color)';
    button.style.background = 'var(--anime-primary-color)';
    button.style.color = 'rgba(var(--anime-white-rgb), 1)';
    button.style.boxShadow = '0 3px 6px -2px rgba(0, 0, 0, 0.2)';
    button.style.display = 'flex';
    button.style.alignItems = 'center';
    button.style.justifyContent = 'center';
    button.style.padding = '0';

    // 創建按鈕內部圖示元素
    var icon = document.createElement('i');
    icon.className = 'material-icons';
    icon.innerText = 'visibility_off';
    icon.style.fontSize = '24px';

    // 添加圖示元素到按鈕中
    button.appendChild(icon);

    // 添加按鈕到頁面的函數
    function addButtonToPage() {
        // 獲取refresh按鈕
        var refreshButton = document.querySelector('.refresh');

        // 添加按鈕到頁面
        var refreshButtonParent = refreshButton.parentNode;
        refreshButtonParent.insertBefore(button, refreshButton);
    }

    // 切換按鈕內部圖示的函數
    function toggleIcon() {
        var icon = button.querySelector('i');
        if (icon.innerText === 'visibility_off') {
            icon.innerText = 'visibility';
        } else {
            icon.innerText = 'visibility_off';
        }
    }

    // 添加按鈕點擊事件處理函數
    button.addEventListener('click', function() {
        var danmuElements = document.querySelectorAll('.sub-list-li');
        for (var i = 0; i < danmuElements.length; i++) {
            var danmuElement = danmuElements[i];
            if (danmuElement.style.display === 'none') {
                danmuElement.style.display = 'list-item';
            } else {
                danmuElement.style.display = 'none';
            }
        }

        // 切換撥放器的彈幕狀態
        var danmuToggleButton = document.getElementById('danmuToggle');
        if (danmuToggleButton) {
            danmuToggleButton.click();
        }

        // 切換按鈕內部圖示
        toggleIcon();
    });

    // 等待網頁載入完成後再執行
    window.addEventListener('load', function() {
        // 自動隱藏彈幕
        var danmuElements = document.querySelectorAll('.sub-list-li');
        for (var i = 0; i < danmuElements.length; i++) {
            var danmuElement = danmuElements[i];
            danmuElement.style.display = 'none';
        }

        // 等待撥放器載入完成後切換彈幕狀態
        var playerInterval = setInterval(function() {
            var danmuToggleButton = document.getElementById('danmuToggle');
            if (danmuToggleButton) {
                danmuToggleButton.click();
                clearInterval(playerInterval);
            }
        }, 500);

        // 添加按鈕到頁面
        addButtonToPage();
    });

    // 監聽網站載入完畢事件
    window.addEventListener('DOMContentLoaded', function() {
        // 再次執行腳本確保運作正確
        addButtonToPage();
    });
})();