You will need to install a user script manager extension to install this script.
This script should not be not be installed directly. It is a library for other scripts to include with the meta directive
// @require https://update.greasyfork.org/scripts/460322/1246943/Geoguessr%20Styles%20Scan.js
Geoguessr sometimes updates its stylesheets, changing its class names, which can break user scripts despite no visible changes to the UI. These minor changes involve the last 5 characters of a class name, which always follow 2 underscores. For example,
"status_section__8uP8o" is the class name for a section in the purple info bar at the top right of the screen in classic games.
This library provides utility functions to make your scripts independent of random changes to these last 5 characters, by letting you define class names by their prefix (underscores included:
"status_section__") rather than the full name.
async function scanStyles() fetches full class names from Geoguessr stylesheets listed in the
<head> block. Note that it is possible that not all styles you need are there at the moment when you're calling
scanStyles, therefore you might want to call it several times. Calling it "too many times" should never be a performance issue as fetching a stylesheet uses cache beyond the first fetch.
function cn(string) outputs the geoguessr class name corresponding to the prefix. For example,
cn("status_section__") evaluates to
"status_section__8uP8o". Make sure you called
scanStyles at least once before using
cn. If the function fails to find the full name, it will simply output undefined.
function checkAllStylesFound(list) outputs a boolean to let you check whether all class name prefixes inside
list are ready for use by
async function requireClassName(string) does the same thing as
cn if the full class name is found the first time, otherwise it will call
scanStyles and then try to call
cn a second time.