From 9b4bd543a88055d9b92d51f8356c8e615e942355 Mon Sep 17 00:00:00 2001 From: koitori77 Date: Sun, 22 Mar 2026 13:03:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20:sparkles:=20=E6=B7=BB=E5=8A=A0=20kissl?= =?UTF-8?q?ove=20(klz9.com)=20=E7=AB=99=E7=82=B9=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/index.ts b/src/index.ts index b8128b98..515721fb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -483,6 +483,36 @@ try { break; } + // #生肉站点[kisslove(klz9)](https://klz9.com) + // test: https://klz9.com/mayonaka-heart-tune-chapter-109.html + case 'klz9.com': { + if (!/-chapter-/.test(location.pathname)) break; + + const getNavBtn = (index: 0 | 1) => + querySelectorAll('main button.flex-1')[index]; + + const handlePrevNext = (index: 0 | 1) => { + const btn = getNavBtn(index); + return btn && !btn.disabled ? () => btn.click() : undefined; + }; + + options = { + name: 'klz9', + wait: () => querySelector('main img:not(a img)'), + getImgList: () => + querySelectorAll('main img:not(a img)').map( + (img) => img.src, + ), + SPA: { + isMangaPage: () => /-chapter-/.test(location.pathname), + getOnPrev: () => handlePrevNext(0), + getOnNext: () => handlePrevNext(1), + handleUrl: (location) => location.pathname, + }, + }; + break; + } + // #国内漫画站[無限動漫](https://www.8comic.com) // test: 直接访问漫画页会因为 referer 检测不过而被拦截,跳过 case '8.twobili.com':