Greasy Fork is available in English.
Warframe Market 物品名称中英对照显示 老外买东西再也不用翻译英文一个一个找了,直接搜索输入就出来
当前为
// ==UserScript==
// @name WarframeMarketTranslationSearch
// @version 1.7
// @description Warframe Market 物品名称中英对照显示 老外买东西再也不用翻译英文一个一个找了,直接搜索输入就出来
// @author hhq
// @license GPL-3.0
// @match https://warframe.market/zh-hans/profile/*
// @grant none
// @run-at document-start
// @namespace http://greasyfork.icu/users/598831
// ==/UserScript==
(function() {
'use strict';
const TARGET_KEY = 'manifests/items';
let interceptedCount = 0; // 记录拦截修改次数
// --- 数据修改函数 ---
function modifyItemNames(itemsManifest) {
let modifiedCount = 0;
if (!itemsManifest || typeof itemsManifest !== 'object') return itemsManifest;
for (const itemId in itemsManifest) {
if (itemsManifest.hasOwnProperty(itemId)) {
const item = itemsManifest[itemId];
try {
const zhName = item.i18n['zh-hans']?.name;
const enName = item.i18n.en?.name;
if (zhName && enName && !zhName.includes(`(${enName})`)) {
item.i18n['zh-hans'].name = `${zhName} (${enName})`;
modifiedCount++;
}
} catch (e) { /* ignore */ }
}
}
return itemsManifest;
}
// ----------------------
// 1. 备份原始的 localStorage.getItem 方法
const originalGetItem = localStorage.getItem;
// 2. 重写 localStorage.getItem 方法 (内存修改)
localStorage.getItem = function(key) {
const originalString = originalGetItem.apply(this, arguments);
if (key === TARGET_KEY && originalString) {
try {
// *** 拦截成功,在内存中修改 ***
interceptedCount++;
console.warn(`脚本:内存拦截成功!目标键 "${TARGET_KEY}" 已被拦截并修改返回。`);
const originalData = JSON.parse(originalString);
const modifiedData = modifyItemNames(originalData);
return JSON.stringify(modifiedData); // 返回修改后的数据
} catch (e) {
console.error("内存修改发生错误,返回原始数据:", e);
}
}
return originalString; // 返回原始数据
};
// ----------------------------------------------------
// 3. 延迟检查:如果网站在脚本重写前已经读取了数据,我们就强制写入,并提示用户刷新。
// ----------------------------------------------------
window.addEventListener('load', () => {
// 如果拦截成功 (interceptedCount > 0),则无需额外操作
if (interceptedCount > 0) {
console.log("拦截已生效,无需强制修改磁盘。");
return;
}
// 如果拦截失败 (interceptedCount === 0),执行强制写入 (方案四逻辑)
console.log("🚨 警告:网站可能在脚本重写前读取了缓存。正在执行强制写入磁盘...");
try {
const originalString = originalGetItem.call(localStorage, TARGET_KEY); // 使用原始方法读取
if (originalString) {
const originalData = JSON.parse(originalString);
const modifiedData = modifyItemNames(originalData);
const modifiedString = JSON.stringify(modifiedData);
// 使用原始方法写入
localStorage.setItem(TARGET_KEY, modifiedString);
console.log(`✅ 强制写入成功!请 **刷新页面** (F5) 以读取新的缓存数据并查看效果。`);
} else {
console.log(`键 "${TARGET_KEY}" 没有数据,无法执行强制写入。`);
}
} catch (e) {
console.error("强制写入磁盘失败:", e);
}
});
})();