图寻眨眼模式

进入游戏后1秒自动隐藏全景图像,按空格键刷新页面并翻页

当前为 2023-09-13 提交的版本,查看 最新版本

// ==UserScript==
// @name         图寻眨眼模式
// @namespace    http://tampermonkey.net/
// @version      1.44
// @description  进入游戏后1秒自动隐藏全景图像,按空格键刷新页面并翻页
// @author       宇宙百科君
// @match        https://tuxun.fun/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 初始化刷新状态
    let refreshEnabled = false;

    // 从localStorage初始化眨眼模式状态
    var blinkMode = localStorage.getItem('blinkMode') !== 'false';

// 第1部分:进入游戏后1秒自动隐藏全景图像
let isObserverActive = true;  // 添加一个标志来跟踪观察者的状态

let observer = new MutationObserver((mutations) => {
    if (blinkMode && isObserverActive) {
        let mapRoot = document.querySelector('.widget-scene-canvas');
        if (mapRoot && getComputedStyle(mapRoot).display !== 'none' && getComputedStyle(mapRoot).opacity !== '0') {
            mapRoot.style.opacity = '0';
            isObserverActive = false;  // 设置观察者标志为false
            setTimeout(() => {
                mapRoot.style.opacity = '1';  // 3秒后显示全景图
                setTimeout(() => {
                    mapRoot.style.opacity = '0';  // 再经过3秒隐藏全景图
                }, 300);
            }, 2000);
        }
    }
});

observer.observe(document.body, {
    attributes: true,
    attributeFilter: ['style', 'width', 'height'],
    subtree: true
});


    // 第2部分:按空格键刷新页面
    async function handleKeyPressForRefresh(e) {
        // 检查是否按下的是空格键(键码32)
        if (e.keyCode === 32 && blinkMode) {
            // 刷新页面前等待0.5秒
            await new Promise(resolve => setTimeout(resolve, 500));
            // 检查特定DOM元素是否存在
            var specificDomElement = document.querySelector('.round_result_center');
            if (!specificDomElement && refreshEnabled) {
                // 如果特定DOM元素不存在且已启用刷新,则刷新页面
                location.reload();
            } else if (specificDomElement) {
                // 如果特定DOM元素存在,启用刷新
                refreshEnabled = true;
            }
        }
    }
let urlPattern = /^https:\/\/tuxun\.fun\/maps-start\?mapsId=\d+$/;

if (urlPattern.test(window.location.href)) {
    // 创建眨眼模式切换按钮

    var blinkSwitch = document.createElement('button');
    blinkSwitch.innerText = "眨眼" + (blinkMode ? "开启" : "关闭");
    blinkSwitch.style.position = "fixed";
    blinkSwitch.style.top = "5px";
    blinkSwitch.style.left = "50%";
    blinkSwitch.style.transform = "translateX(-50%)";
    blinkSwitch.style.zIndex = "9999";
    blinkSwitch.style.background = "#fff";
    blinkSwitch.style.border = "none";
    blinkSwitch.style.borderRadius = "25px";
    blinkSwitch.style.padding = "5px 5px";
    blinkSwitch.onclick = function() {
        blinkMode = !blinkMode;
        blinkSwitch.innerText = "眨眼" + (blinkMode ? "开启" : "关闭");
        // 将状态保存到localStorage
        localStorage.setItem('blinkMode', blinkMode);
    };
    document.body.appendChild(blinkSwitch);

}

    // 第3部分:按空格键翻页
    function handleKeyPressForNextPage(e) {
        // 检查是否按下的是空格键(键码32)
        if (e.keyCode === 32) {
            // 查找“下一页”按钮并点击它
            var nextPageButton = document.querySelector('.confirm .el-button.el-button--default.el-button--medium.is-round');
            if (nextPageButton) {
                nextPageButton.click();
            }
        }
    }

    // 第4部分:按空格键触发另一个选择器
    function handleKeyPressForAnotherSelector(e) {
        // 检查是否按下的是空格键(键码32)
        if (e.keyCode === 32) {
            // 查找另一个选择器并执行相应操作
            var buttons = document.querySelectorAll('button');
            var startButton;
            var replayButton;
            var preserveButton;
            for (var i = 0; i < buttons.length; i++) {
                if (buttons[i].textContent == '开始') {
                    startButton = buttons[i];
                }
                if (buttons[i].textContent == '再来一局') {
                    replayButton = buttons[i];
                }
                if (buttons[i].textContent == '保留') {
                    preserveButton = buttons[i];
                }
            }
            if (startButton) {
                startButton.click();
            }
            if (replayButton) {
                replayButton.click();
            }
            if (preserveButton) {
                preserveButton.click();
            }
        }
    }

    // 每隔500ms检查"下一题"按钮是否已经出现
    var checkExist = setInterval(function() {
        var nextPageButton = document.querySelector('.confirm .el-button.el-button--default.el-button--medium.is-round');
        if (nextPageButton) {
            // 如果"下一题"按钮已经出现,添加键盘按键事件监听器,并停止定时器
            document.addEventListener('keydown', handleKeyPressForNextPage);
            clearInterval(checkExist);
        }
    }, 500);

    // 监听按键事件
    document.addEventListener('keydown', handleKeyPressForRefresh);
    document.addEventListener('keydown', handleKeyPressForAnotherSelector);
})();