您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Chỉnh sửa name cho truyện dạng chat của nguồn Sfacg
// ==UserScript== // @name Edit Name Sfacg Chat Novel // @namespace Hexros Raymond // @version 1.1.3 // @description Chỉnh sửa name cho truyện dạng chat của nguồn Sfacg // @author Hexros Raymond // @license MPL 2.0 // @match *://*/truyen/sfacg/1/*/*/ // @grant none // ==/UserScript== (function () { "use strict"; function createButton(text, onClickFunction, bottomOffset) { var button = document.createElement("button"); button.className = "new-btn"; button.textContent = text; let styles = { position: "fixed", bottom: bottomOffset + "px", right: "13px", fontSize: "14px", outline: "none", borderRadius: "100%", height: "50px", width: "50px", margin: "2px", }; Object.assign(button.style, styles); button.addEventListener("click", onClickFunction); document.body.appendChild(button); return button; } function runName() { document.querySelector("button[onclick='showNS()']").click(); let copyText = document.querySelector("#namewd").value; document.querySelector("button[onclick='hideNS()']").click(); const names = []; copyText = copyText.split("\n"); copyText.forEach((text) => { if (text.startsWith("$")) { text = text.replace("$", ""); text = text.split("="); names.push({ original: text[0], translated: text[1], }); } }); const chat_novel = document.querySelectorAll(".chatnovel > div"); for (let k = names.length - 1; k >= 0; k--) { chat_novel.forEach((div) => { const textElements = div.querySelectorAll("i"); for (let i = 0; i < textElements.length; i++) { let combinedText = ""; let elementsToReplace = []; for (let j = i; j < textElements.length; j++) { if ( i === j && !names[k].original.startsWith( textElements[j].getAttribute("t") ) ) { break; } combinedText += textElements[j].getAttribute("t"); elementsToReplace.push(textElements[j]); if (combinedText === names[k].original) { const newElement = document.createElement("i"); let h = ""; for (let k = 0; k < elementsToReplace.length; k++) { h += elementsToReplace[k].getAttribute("h") + " "; } h = h.trim(); newElement.setAttribute("h", h); newElement.setAttribute("t", names[k].original); newElement.setAttribute("v", names[k].translated); newElement.setAttribute( "id", elementsToReplace[0].id ); newElement.setAttribute( "p", elementsToReplace[0].getAttribute("p") ); newElement.style.color = "inherit"; newElement.setAttribute("isname", "true"); newElement.textContent = names[k].translated; elementsToReplace[0].replaceWith(newElement); for (let l = 1; l < elementsToReplace.length; l++) { elementsToReplace[l].remove(); } } if (combinedText.length > names[k].original.length) { break; } } } }); } } function checkForChatNovel() { const chatNovelExists = document.querySelector(".chatnovel"); if (chatNovelExists) { runName(); } else { setTimeout(checkForChatNovel, 500); } } window.onload = function () { createButton("Run", runName, 90); checkForChatNovel(); }; })();