diff melonbooks-unlazy.user.js @ 97:c8f9350c5307

More thorough lazyload monitor
author nanaya <me@nanaya.net>
date Fri, 23 Dec 2022 19:56:19 +0900
parents 368035f2213b
children 3e5f1fa9ed52
line wrap: on
line diff
--- a/melonbooks-unlazy.user.js	Fri Dec 23 19:14:04 2022 +0900
+++ b/melonbooks-unlazy.user.js	Fri Dec 23 19:56:19 2022 +0900
@@ -3,8 +3,8 @@
 // @namespace   https://nanaya.net
 // @match       https://www.melonbooks.co.jp/*
 // @grant       none
-// @run-at      document-end
-// @version     1.0.1
+// @run-at      document-start
+// @version     1.0.2
 // @author      nanaya
 // @description replace lazy loaded images with just images
 // @downloadURL https://hg.nanaya.net/ec-userscripts/raw-file/tip/melonbooks-unlazy.user.js
@@ -12,13 +12,25 @@
 
 'use strict'
 
-for (const img of document.querySelectorAll('.lazyload')) {
-  const src = img.dataset.src
+function fix (image) {
+  if (!image.classList.contains('lazyload')) return
+
+  image.classList.remove('lazyload')
+  image.src = image.dataset.src
+  delete image.dataset.src
+}
 
-  if (src != null) {
-    img.src = src
-    img.classList.remove('lazyload')
-    img.classList.add('unlazied')
-    delete img.dataset.src
+function onMutate (mutations) {
+  for (const mutation of mutations) {
+    for (const node of mutation.addedNodes) {
+      if (node instanceof window.HTMLElement) {
+        for (const image of node.querySelectorAll('.lazyload')) {
+          fix(image)
+        }
+      }
+    }
   }
 }
+
+const observer = new window.MutationObserver(onMutate)
+observer.observe(document, { childList: true, subtree: true })