view mandarake-direct-link.user.js @ 103:b2d0b37f945f

Update mandarake script - update download url - remove iife - run at document start - use observer - remove search link fixer (seems to be fixed already)
author nanaya <me@nanaya.net>
date Sat, 24 Dec 2022 22:10:30 +0900
parents 9c8cde985caf
children 93e21738b588
line wrap: on
line source

// ==UserScript==
// @name         mandarake direct link
// @namespace    https://myconan.net
// @version      2.0.0
// @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 onMutate (mutations) {
  for (const mutation of mutations) {
    for (const node of mutation.addedNodes) {
      if (node instanceof window.HTMLElement) {
        if (removeR18Mark(node)) continue

        fixR18Link(node)
        for (const link of node.querySelectorAll(`a[href='${r18ConfirmLink}']`)) {
          fixR18Link(link)
        }
      }
    }
  }
}

const observer = new window.MutationObserver(onMutate)
observer.observe(document, { childList: true, subtree: true })