Mercurial > ec-userscripts
view mandarake-direct-link.user.js @ 110:b9b84779a672
Combine tweetdeck fixes
author | nanaya <me@nanaya.net> |
---|---|
date | Sun, 15 Jan 2023 23:36:45 +0900 |
parents | ef21ef445fc6 |
children | d9dc190bccaf |
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'; function directLink () { 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); } directLink();