侦听innerHTML

侦听元素innerHTML变化

이 스크립트는 직접 설치해서 쓰는 게 아닙니다. 다른 스크립트가 메타 명령 // @require https://updategreasyfork.deno.dev/scripts/470241/1215965/%E4%BE%A6%E5%90%ACinnerHTML.js(으)로 포함하여 쓰는 라이브러리입니다.

질문, 리뷰하거나, 이 스크립트를 신고하세요.
// ==UserScript==
// @name         侦听innerHTML
// @namespace    https://leochan.me
// @version      1.1.0
// @description  侦听元素innerHTML变化
// @author       Leo
// @match        *://*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=leochan.me
// @licesen      GPLv2
// @grant        none
// ==/UserScript==

function leoChanWatchInnerHTML(selector, cb){
    let targetElement = document.querySelector(selector);
    if(!targetElement){
        return;
    }
    let previousInnerHTML = targetElement.innerHTML;
    let timer = null;
    targetElement.addEventListener('DOMSubtreeModified', () => {
        clearTimeout(timer);
        timer = setTimeout(() => {
            if (targetElement.innerHTML !== previousInnerHTML) {
                cb()
            }
            previousInnerHTML = targetElement.innerHTML;
        }, 100);
    });
}