// ==UserScript== // @name 谁是股批 // @name:en who-is-browser-gamer // @namespace lanyangzhi.github.io // @version 0.3.1 // @description "有没有人做一个插件,点开石之家的主页,自动查logs然后显示出来" // @description:en ffxiv chinese server only // @author Lanyangzhi // @match *://ff14risingstones.web.sdo.com/* // @icon https://assets.rpglogs.cn/img/ff/favicon.png // @grant none // @license MIT // @downloadURL none // ==/UserScript== const delay = 500; (function() { 'use strict'; function ProcessLocationIcon(startingIcon) { let parentElement = startingIcon.parentElement.parentElement.parentElement; let usernameElement = FindUsernameElement(parentElement); //console.log(`获取的用户名: ${usernameElement ? usernameElement.innerText : '未找到'}`); let server = FindServer(startingIcon); //console.log(`获取的服务器: ${server}`); if (usernameElement && server) { InsertLogsIcon(usernameElement, server) } } function FindUsernameElement(parentElement) { // 非个人页:第一个能被鼠标点击、仅包含文本的 span 元素 let elements = parentElement.querySelectorAll('span.cursor'); //console.log("找到的元素数量(非个人页): ", elements.length); for (let element of elements) { if (element.childNodes.length == 1 && element.innerText.length >= 1 && element.innerText.length <= 6) { return element; } } // 个人页 elements = parentElement.querySelectorAll('span.ft24.ftw'); for (let element of elements) { if (element.childNodes.length == 1 && element.innerText.length >= 1 && element.innerText.length <= 6) { return element; } } return null; } /* * 结构 1: * * * * * * 结构 2: * * 区 服 * 结构 3: * * * */ function FindServer(startingIcon) { let element = startingIcon.nextElementSibling; if (element && element.querySelector('span')) { element = element.querySelector('span:first-child'); } let text = element.textContent.trim(); if (text.includes(' ')) { return text.split(' ')[1]; } else { return element.nextElementSibling ? element.nextElementSibling.textContent : ''; } } function InsertLogsIcon(usernameElement, server) { var newNode = document.createElement('a'); var username = usernameElement.innerText; newNode.id = 'ff-icon'; newNode.href = `https://cn.fflogs.com/character/CN/${server}/${username}`; newNode.innerHTML = ''; usernameElement.insertAdjacentElement('afterend', newNode); console.log(`FFLogs 图标已添加到:${username}@${server}`); } // v0.3.1 upd setInterval(function() { var autherVerify = document.querySelector('.ft20.ftw.mr15.cursor').innerText var tName = document.querySelector('.ft28.ftw500').innerText if (autherVerify==="五岁徒弟" & tName.includes("招待招募板")){ var elements = document.querySelectorAll('.icon-location.dwcolor'); // 搜索服务器前的图标作为定位特征 elements.forEach(function(iconElement) { if (!iconElement.hasAttribute('data-logs-processed')) { ProcessLocationIcon(iconElement); iconElement.setAttribute('data-logs-processed', 'true'); // 标记已处理 } }); } }, delay); })();