Mercurial > ec-userscripts
view mandarake-direct-link.user.js @ 127:a701294f38ff
More reliable state handling
author | nanaya <me@nanaya.net> |
---|---|
date | Sat, 21 Jan 2023 03:15:26 +0900 |
parents | 8de2d53a4cb1 |
children | 8ccdc82249a2 |
line wrap: on
line source
// ==UserScript== // @name mandarake direct link // @namespace https://nanaya.net // @version 2.0.1 // @description Make proper link on mandarake pages // @author nanaya // @match https://order.mandarake.co.jp/* // @match http://order.mandarake.co.jp/* // @grant none // @run-at document-start // @downloadURL https://hg.nanaya.net/ec-userscripts/raw-file/tip/mandarake-direct-link.user.js // ==/UserScript== 'use strict'; const r18ConfirmLink = '#adult_confirm'; function fixR18Link (link) { if (!(link instanceof window.HTMLAnchorElement) || link.getAttribute('href') !== r18ConfirmLink) return; link.setAttribute('href', `/order/detailPage/item?itemCode=${link.id}`); link.removeAttribute('class'); } function removeR18Mark (node) { if (node.classList.contains('r18mark')) { node.remove(); return true; } for (const mark of node.querySelectorAll('.r18mark')) { mark.remove(); } } function run (node) { if (!(node instanceof window.HTMLElement)) return; if (removeR18Mark(node)) return; fixR18Link(node); for (const link of node.querySelectorAll(`a[href='${r18ConfirmLink}']`)) { fixR18Link(link); } } function onMutate (mutations) { for (const mutation of mutations) { for (const node of mutation.addedNodes) { run(node); } } } const observer = new window.MutationObserver(onMutate); observer.observe(document, { childList: true, subtree: true }); run(document.body);