Geoguessr Blink Mode

Gives you one second per round, but instead of ending instantly, the screen goes black and you have unlimited time to make your guess.

目前为 2022-01-15 提交的版本。查看 最新版本

// ==UserScript==
// @name         Geoguessr Blink Mode
// @description  Gives you one second per round, but instead of ending instantly, the screen goes black and you have unlimited time to make your guess.
// @version      0.1.0
// @author       macca#8949
// @license      MIT
// @include      https://www.geoguessr.com/*
// @run-at       document-start
// @grant        none
// @namespace https://gf.qytechs.cn/users/865125
// ==/UserScript==

const timeLimit = 1.0; // MODIFY THIS IF YOU WANT TO CHANGE THE TIME

if (sessionStorage.getItem('1SPREnabled') == null) {
    sessionStorage.setItem('1SPREnabled', 'disabled');
}

window.toggleScript = function(e) {
    if (e.checked) {
        sessionStorage.setItem('1SPREnabled', 'enabled');
    } else {
        sessionStorage.setItem('1SPREnabled', 'disabled');
    }
}

function check(changes, observer) {
    if (document.querySelector('.checkboxes--vertical') && document.querySelector('#enableScript') === null) {
        document.querySelector('.checkboxes--vertical').insertAdjacentHTML('beforeend', '<div class="checkboxes checkboxes--vertical"><label class="checkbox"><input type="checkbox" id="enableScript" onclick="toggleScript(this)" class="checkbox__input" name="show-game-settings"><span class="checkbox__mark checkbox__mark--dark"></span> <span class="game-settings__checkbox-main-label">Enable Blink Mode</span><br></label></div>');
        if (sessionStorage.getItem('1SPREnabled') === 'enabled') {
            document.querySelector('#enableScript').checked = true;
        }
    }
}

(new MutationObserver(check)).observe(document, {childList: true, subtree: true});

const checkElement = async selector => {
    while (document.querySelector(selector) === null) {
        await new Promise(resolve => requestAnimationFrame(resolve));
    }
    return document.querySelector(selector);
};

const respondToVisibility = function(element, callback) {
    var options = {
        root: document.documentElement
    }

    var observer = new IntersectionObserver((entries, observer) => {
        entries.forEach(entry => {
            callback(entry.intersectionRatio > 0);
        });
    }, options);

    observer.observe(element);
}

checkElement('.widget-scene-canvas').then((canvas) => {
    respondToVisibility(canvas, visible => {
        if (sessionStorage.getItem('1SPREnabled') === 'enabled') {
            setTimeout(() => {
                canvas.style.display = 'none';
            }, (timeLimit + 0.5) * 1000);
        }
    });
});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址