Greasy Fork is available in English.
Replaces "available" with "securable" ONLY in trade button hrefs on poe.ninja
// ==UserScript==
// @name Replace "available" with "securable" in trade links
// @namespace http://tampermonkey.net/
// @version 1.3
// @description Replaces "available" with "securable" ONLY in trade button hrefs on poe.ninja
// @author deepseek
// @match https://poe.ninja/*
// @match http://poe.ninja/*
// @grant none
// @run-at document-end
// @license MIT
// ==/UserScript==
(function() {
'use strict';
function fixTradeLinks() {
// Find all trade buttons/links (they have hrefs containing pathofexile.com/trade)
const tradeLinks = document.querySelectorAll('a[href*="pathofexile.com/trade"]');
let fixedCount = 0;
tradeLinks.forEach(link => {
let href = link.getAttribute('href');
if (href && href.includes('available')) {
const newHref = href.replace(/available/g, 'securable');
if (newHref !== href) {
link.setAttribute('href', newHref);
fixedCount++;
}
}
});
if (fixedCount > 0) {
console.log(`✅ Fixed ${fixedCount} trade links: replaced "available" with "securable"`);
}
}
// Run initially
fixTradeLinks();
// Run after short delays for dynamically loaded content
setTimeout(fixTradeLinks, 1000);
setTimeout(fixTradeLinks, 2000);
setTimeout(fixTradeLinks, 3000);
setTimeout(fixTradeLinks, 5000);
// Watch for new trade links being added
const observer = new MutationObserver(function(mutations) {
let shouldCheck = false;
mutations.forEach(function(mutation) {
if (mutation.addedNodes.length > 0) {
mutation.addedNodes.forEach(node => {
if (node.nodeType === Node.ELEMENT_NODE) {
if (node.tagName === 'A' || node.querySelectorAll) {
shouldCheck = true;
}
}
});
}
});
if (shouldCheck) {
fixTradeLinks();
}
});
if (document.body) {
observer.observe(document.body, {
childList: true,
subtree: true
});
}
console.log('🔄 Trade link fixer active on poe.ninja');
})();