Mercurial > ec-userscripts
view mandarake-direct-link.user.js @ 104:93e21738b588
Run fix on whole body on start
There's no guarantee the script loads before document.
author | nanaya <me@nanaya.net> |
---|---|
date | Sun, 25 Dec 2022 11:52:30 +0900 |
parents | b2d0b37f945f |
children | 2c4470b73ad9 |
line wrap: on
line source
// ==UserScript== // @name mandarake direct link // @namespace https://myconan.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)