您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Gets the markers_all json file and change user defined markers to be markable.
// ==UserScript== // @name GI AppSample Map - More Markable Markers // @namespace http://tampermonkey.net/ // @version 1.2 // @description Gets the markers_all json file and change user defined markers to be markable. // @author 2KRN4U // @match https://genshin-impact-map.appsample.com/* // @icon https://genshin-impact-map.appsample.com/favicon.ico // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; // List of markers to change const list = "o596, o601, o602, o639, o641, o647, o128"; // EDIT THIS LINE ONLY, seperate by comma. Example "o596, o317"; const targetFilenameStart = "markers_all"; // Filename of the markers file const keys = list.split(",").map(key => key.trim()); // Convert list to an array of trimmed keys const allowMarkComment = 5; // Value to allow marking and commenting // Save references to the original XHR methods const originalOpen = XMLHttpRequest.prototype.open; const originalSend = XMLHttpRequest.prototype.send; // Override the open method XMLHttpRequest.prototype.open = function (method, url, async, user, password) { this._filename = url.split('/').pop(); // Extract the filename from the URL this._url = url; // Store the URL for later use originalOpen.apply(this, arguments); // Call the original open method }; // Override the send method XMLHttpRequest.prototype.send = function (body) { this.addEventListener('readystatechange', function () { // Only process requests if the filename matches the target prefix if ( this.readyState === 4 && this.status === 200 && this._filename.startsWith(targetFilenameStart) // Check if filename starts with the target string ) { try { let modifiedResponseText = this.responseText; // Apply replacements for each key in the list keys.forEach(key => { const searchPattern = new RegExp(`("${key}",\\d+,)(\\d+)(,)`, 'g'); // Search pattern for markers modifiedResponseText = modifiedResponseText.replace( searchPattern, (_, prefix, lastDigits, suffix) => `${prefix}${allowMarkComment}${suffix}` ); // Replace to allow marking and commenting }); // Overwrite the responseText property with the modified content Object.defineProperty(this, 'responseText', { value: modifiedResponseText, configurable: true, }); // Optional: Overwrite response (useful if response is accessed differently) Object.defineProperty(this, 'response', { value: modifiedResponseText, configurable: true, }); } catch (e) { console.error('Error modifying JSON response:', e); } } }); // Call the original send method originalSend.apply(this, arguments); }; // Wait for the DOM to fully load window.addEventListener('load', function () { // Function to modify the title const modifyTitle = (originalTitle, dataTestId) => { // Trim the first 4 characters of data-testid const trimmedData = dataTestId ? dataTestId.slice(4) : 'Unknown'; // Combine the original title with the trimmed data-testid return `${originalTitle}: ${trimmedData}`; }; // Select all buttons with the class "MuiButtonBase-root" const buttons = document.querySelectorAll('.MuiButtonBase-root'); // Iterate over each button buttons.forEach(button => { const originalTitle = button.getAttribute('title'); const dataTestId = button.getAttribute('data-testid'); // Only proceed if both title and data-testid exist if (originalTitle && dataTestId) { const newTitle = modifyTitle(originalTitle, dataTestId); button.setAttribute('title', newTitle); } }); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址