您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Blocks the pop-up alerts in Godori
// ==UserScript== // @name Neopets: Godori Pop-Ups Begone // @namespace https://github.com/saahphire/NeopetsUserscripts // @description Blocks the pop-up alerts in Godori // @match https://www.neopets.com/games/godori/* // @exclude https://www.neopets.com/games/godori/index.phtml // @version 1.0.0 // @author saahphire // @homepageURL https://github.com/saahphire/NeopetsUserscripts // @icon https://www.google.com/s2/favicons?sz=64&domain=neopets.com // @license The Unlicense // @run-at document-start // ==/UserScript== /* •:•.•:•.•:•:•:•:•:•:•:••:•.•:•.•:•:•:•:•:•:•:•:•.•:•.•: ....................................................... ☆ ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂✦ ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂☆ ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂✦ This script removes every single pop-up in Godori. ✦ ⌇ saahphire ☆ ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂✦ ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂☆ ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂✦ ...................................................... •:•.•:•.•:•:•:•:•:•:•:••:•.•:•.•:•:•:•:•:•:•:•:•.•:•.• */ /** * Moves the Godori help text to a <details> element so it can be collapsed */ const detailize = () => { const title = document.querySelector(".content p"); const details = document.createElement("details"); const summary = document.createElement("summary"); details.appendChild(summary); summary.appendChild(title.children[0]); let children = [...title.parentElement.childNodes]; const cutAt = children.findIndex(child => child.tagName === "CENTER"); children.splice(0, cutAt).forEach(child => details.appendChild(child)); children[0].insertAdjacentElement("beforeBegin", details); } /** * Adds the "_ plays first!" message to the log * @param log {Element} the <details> element that serves as our log */ const addPlaysFirst = (log) => { if(!saahphireGodoriAlert) return; const p = document.createElement("p"); p.textContent = saahphireGodoriAlert; document.getElementById("saahphire-godori-log").appendChild(p); } /** * Creates the <details> element that will serve as a log */ const createLog = () => { const log = document.createElement("details"); const summary = document.createElement("summary"); log.appendChild(summary); summary.textContent = "Log"; log.id = "saahphire-godori-log"; document.getElementsByTagName("details")[0].insertAdjacentElement("afterEnd", log); addPlaysFirst(log); } /** * Adds both <details> elements to the DOM and changes the behavior of window.alert * @param script {Element} the <script> element */ const initialize = (script) => { detailize(); createLog(); script.textContent = `window.alert = (alert) => { const p = document.createElement("p"); p.textContent = alert; document.getElementById("saahphire-godori-log").appendChild(p); }; window.confirm = () => true`; } /** * Creates a <script> element changing the behavior of window.alert and window.confirm so they no longer create popups * @returns {Element} the <script> element */ const addScriptElement = () => { const script = document.createElement("script"); script.type = "text/javascript"; script.textContent = `let saahphireGodoriAlert; window.alert = (alert) => {saahphireGodoriAlert = alert}; window.confirm = () => true`; const parent = document.getElementsByTagName("head")[0] ?? document.body ?? document.documentElement; parent.appendChild(script); return script; } (function() { const script = addScriptElement(); document.addEventListener("DOMContentLoaded", () => initialize(script)); })();