您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces "available" with attack links and makes them clickable, skipping anonymous sellers.
- // ==UserScript==
- // @name Replace "Available" and Make Attack-Links Clickable
- // @namespace http://tampermonkey.net/
- // @version 1.2
- // @description Replaces "available" with attack links and makes them clickable, skipping anonymous sellers.
- // @author Grance [3487987]
- // @match *://www.torn.com/page.php?sid=ItemMarket*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function () {
- 'use strict';
- // Function to replace "available" with attack links based on extracted IDs
- function replaceAvailableWithAttackLinks() {
- const sellerList = document.querySelector('ul.sellerList___kgAh_'); // Get the <ul> with class 'sellerList___kgAh_'
- if (sellerList) {
- const sellers = sellerList.querySelectorAll('li.rowWrapper___me3Ox'); // Select all listing rows
- sellers.forEach(row => {
- const anonymousDiv = row.querySelector('div.anonymous___P3S5S');
- if (anonymousDiv) {
- // Skip if the seller is anonymous
- return;
- }
- const profileLink = row.querySelector('a[href^="/profiles.php?XID="]');
- if (profileLink) {
- const url = new URL(profileLink.href, 'https://www.torn.com'); // Handle relative URLs
- const profileID = url.searchParams.get('XID'); // Extract the XID parameter from the href
- const availableDiv = row.querySelector('div.available___xegv_');
- if (availableDiv && availableDiv.textContent.includes('available')) {
- // Extract the quantity from the text (e.g., "16 available")
- const quantity = availableDiv.textContent.split(' ')[0]; // Get the first part (e.g., "16")
- availableDiv.textContent = `https://www.torn.com/loader.php?sid=attack&user2ID=${profileID} (${quantity})`;
- }
- }
- });
- }
- }
- // Function to convert div into a clickable link
- function convertDivToLink() {
- const divs = document.querySelectorAll('div.available___xegv_');
- divs.forEach((div) => {
- if (div.textContent.includes('https://') && !div.dataset.linkConverted) {
- const urlMatch = div.textContent.match(/https:\/\/www\.torn\.com\/loader\.php\?sid=attack&user2ID=\d+/);
- if (urlMatch) {
- const url = urlMatch[0];
- const text = div.textContent.replace(url, '').trim();
- const link = document.createElement('a');
- link.href = url;
- link.textContent = `${text} Attack`;
- link.style.color = 'inherit';
- link.style.textDecoration = 'none';
- link.target = '_blank';
- div.innerHTML = '';
- div.appendChild(link);
- div.dataset.linkConverted = 'true';
- }
- }
- });
- }
- // Run the replacement function after the page has fully loaded
- window.addEventListener('load', () => {
- replaceAvailableWithAttackLinks();
- convertDivToLink();
- });
- // Observe for dynamic updates and replace again
- const observer = new MutationObserver(() => {
- replaceAvailableWithAttackLinks();
- convertDivToLink();
- });
- observer.observe(document.body, { childList: true, subtree: true });
- })();