您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
j for hiding all overlays, h for only hiding the map, combinable
当前为
// ==UserScript== // @name GeoGuessr Hide Overlays // @namespace https://greasyforks.org/en/users/1501889 // @version 13.12 // @description j for hiding all overlays, h for only hiding the map, combinable // @author Clemens // @match https://www.geoguessr.com/* // @icon https://www.google.com/s2/favicons?domain=geoguessr.com // @run-at document-idle // @license MIT // ==/UserScript== (function() { 'use strict'; const localStorageKeyOverlaysHidden = 'geoguessr_overlays_hidden_v2'; const localStorageKeyMapHidden = 'geoguessr_map_hidden_v2'; const mapSelector = 'div[data-qa="guess-map"]'; const nonMapOverlaySelectors = [ '.game_status___YFni', '.game_controls__xgq6p', '.game_inGameLogos__T9d3L', '.panorama-compass_compassContainer__VAYam', 'img[alt="Google Maps Logo"]', 'div[style*="position: absolute; right: 0px; bottom: 0px;"] .gmnoprint', '.duels-panorama_controls___OEib' ]; const toggleNonMapOverlays = (forceHide) => { const overlays = Array.from(document.querySelectorAll(nonMapOverlaySelectors.join(', '))); if (overlays.length > 0) { const isCurrentlyHidden = localStorage.getItem(localStorageKeyOverlaysHidden) === 'true'; const shouldBeHidden = (forceHide !== undefined) ? forceHide : !isCurrentlyHidden; const displayStyle = shouldBeHidden ? 'none' : ''; overlays.forEach(overlay => { overlay.style.display = displayStyle; }); localStorage.setItem(localStorageKeyOverlaysHidden, shouldBeHidden.toString()); } }; const toggleMap = (forceHide) => { const mapContainer = document.querySelector(mapSelector); if (mapContainer) { const isCurrentlyHidden = localStorage.getItem(localStorageKeyMapHidden) === 'true'; const shouldBeHidden = (forceHide !== undefined) ? forceHide : !isCurrentlyHidden; const displayStyle = shouldBeHidden ? 'none' : ''; mapContainer.style.display = displayStyle; localStorage.setItem(localStorageKeyMapHidden, shouldBeHidden.toString()); } }; const applySavedPreference = () => { const nonMapOverlaysHidden = localStorage.getItem(localStorageKeyOverlaysHidden) === 'true'; const mapHidden = localStorage.getItem(localStorageKeyMapHidden) === 'true'; const nonMapOverlays = Array.from(document.querySelectorAll(nonMapOverlaySelectors.join(', '))); nonMapOverlays.forEach(overlay => { overlay.style.display = nonMapOverlaysHidden ? 'none' : ''; }); const mapContainer = document.querySelector(mapSelector); if (mapContainer) { mapContainer.style.display = mapHidden ? 'none' : ''; } }; const observer = new MutationObserver((mutationsList, observer) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { const mapElement = document.querySelector(mapSelector); const nonMapOverlayElement = document.querySelector(nonMapOverlaySelectors.join(', ')); if (mapElement || nonMapOverlayElement) { applySavedPreference(); } } } }); document.addEventListener('keydown', (event) => { if (event.key === 'h' || event.key === 'j') { event.preventDefault(); } if (event.key === 'h') { toggleMap(); } if (event.key === 'j') { const nonMapOverlaysHidden = localStorage.getItem(localStorageKeyOverlaysHidden) === 'true'; const newNonMapState = !nonMapOverlaysHidden; toggleNonMapOverlays(newNonMapState); toggleMap(newNonMapState); } }); observer.observe(document.body, { childList: true, subtree: true }); applySavedPreference(); })();