diff --git a/main.user.js b/main.user.js index 27dfd95..020b563 100644 --- a/main.user.js +++ b/main.user.js @@ -7096,6 +7096,9 @@ return await extractEmbedded(reader.getReader()); }; var processPost = async (post) => { + if (post.hasAttribute("data-processed")) + return; + post.setAttribute("data-processed", "true"); let thumb = post.querySelector(".fileThumb"); if (!thumb) return; @@ -7207,7 +7210,9 @@ var startup = async () => { await Promise.all([...document.querySelectorAll(".postContainer")].map((e) => processPost(e))); document.addEventListener("PostsInserted", async (e) => { - processPost(e.target); + let threadelement = e.target; + let posts = [...threadelement.querySelectorAll("postContainer")].filter((e2) => e2.hasAttribute("data-processed")); + posts.map((e2) => processPost(e2)); }); let getSelectedFile = () => { return new Promise((res) => { diff --git a/src/main.ts b/src/main.ts index 26b929d..2d7a57f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -127,6 +127,9 @@ let processImage2 = async (src: string) => { }; let processPost = async (post: HTMLDivElement) => { + if (post.hasAttribute('data-processed')) + return; + post.setAttribute('data-processed', "true"); let thumb = post.querySelector(".fileThumb") as HTMLAnchorElement; if (!thumb) return; @@ -256,7 +259,9 @@ const startup = async () => { //await Promise.all([...document.querySelectorAll('.postContainer')].filter(e => e.textContent?.includes("191 KB")).map(e => processPost(e as any))); document.addEventListener('PostsInserted', (async (e: CustomEvent) => { - processPost(e.target as any); + let threadelement = e.target as HTMLDivElement + let posts = [...threadelement.querySelectorAll("postContainer")].filter(e => e.hasAttribute('data-processed')); + posts.map(e => processPost(e as any)); })); let getSelectedFile = () => {