您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows using PlugShare without an account.
// ==UserScript== // @name PlugShareAnonymous // @namespace https://greasyfork.org/en/users/1365511-robosphinx // @version 2025.01.21.001 // @description Allows using PlugShare without an account. // @author robosphinx_, callumhume // @match *://*.plugshare.com/* // @grant none // @license GPLv3 // ==/UserScript== (function main() { 'use strict'; const SCRIPT_LONG_NAME = GM_info.script.name; const SCRIPT_SHORT_NAME = "PSA"; const SCRIPT_VERSION = GM_info.script.version; const LOGIN_DIALOG_CLASS = '.md-dialog-container'; const ANTI_CLICK_BACKGROUND_1_ID = '#toast-container'; const ANTI_CLICK_BACKGROUND_2_ID = '.md-dialog-backdrop'; const LOAD_MAP_BUTTON = '.load'; let successfulStartup = false; function log(tag, message) { if (tag == "ERROR") { console.error(SCRIPT_SHORT_NAME + ": " + tag + ": " + message); } else { console.log(SCRIPT_SHORT_NAME + ": " + tag + ": " + message); } } function removeLoginWindow() { // Heirarchy follows // ID layer-switcher-region // class layer-switcher // class menu // class scrollable // class list-unstyled togglers // class group // class md-dialog-container ng-scope try { log("INFO", "Looking for div ids to nuke..."); let loginDialog = document.querySelector(LOGIN_DIALOG_CLASS); // Grab element by class name if (loginDialog != null) { log("INFO", "Found login dialog: " + loginDialog); loginDialog.remove(); let toastContainer = document.querySelector(ANTI_CLICK_BACKGROUND_1_ID); // Grab element by ID if (toastContainer != null) { log("INFO", "Found toast container: " + toastContainer); toastContainer.remove(); let dialogBackdrop = document.querySelector(ANTI_CLICK_BACKGROUND_2_ID); // Grab element by class if (dialogBackdrop != null) { log("INFO", "Found dialog backdrop: " + dialogBackdrop); dialogBackdrop.remove(); let loadMapButton = document.querySelector(LOAD_MAP_BUTTON); // Grab element by class if (loadMapButton != null) { log("INFO", "Found map load button: " + loadMapButton); loadMapButton.click(); successfulStartup = true; } else { log("ERROR", "Could not find element with class " + LOAD_MAP_BUTTON); successfulStartup = false; } } else { log("ERROR", "Could not find element with class " + ANTI_CLICK_BACKGROUND_2_ID); successfulStartup = false; } } else { log("ERROR", "Could not find element with class " + ANTI_CLICK_BACKGROUND_1_ID); successfulStartup = false; } } else { log("ERROR", "Could not find element with class " + LOGIN_DIALOG_CLASS); successfulStartup = false; } } catch (err) { log("ERROR", "Looking for div ids to nuke returned error " + err); successfulStartup = false; } }; function init() { log("INFO", SCRIPT_LONG_NAME + " " + SCRIPT_VERSION + " started"); removeLoginWindow(); if (successfulStartup) { log("INFO", SCRIPT_LONG_NAME + " initialized!"); } else { log("ERROR", SCRIPT_LONG_NAME + " could not initialize."); } } function bootstrap() { let loginDialog = document.querySelector(LOGIN_DIALOG_CLASS); // Grab element by class name if (loginDialog != null) { init(); } else { setTimeout(bootstrap, 100); } } bootstrap(); })();