Geoguessr Styles Scan

Provides utility functions to make your geoguessr scripts independent of arbitrary changes to class name suffixes

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/460322/1408713/Geoguessr%20Styles%20Scan.js

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

作者
victheturtle
版本
1.0.1
建立日期
2023-02-19
更新日期
2024-07-10
尺寸
1.4 KB
授權條款
MIT

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 cn.

  • 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.