Skip to content

Commit 4d4aff8

Browse files
fix: 脚本兼容问题
1 parent 72729c4 commit 4d4aff8

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

src/plugin/syringe/index.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ function isText(node: Node | undefined): node is Text {
2222
return node != null && node.nodeType === Node.TEXT_NODE;
2323
}
2424

25+
const skipNodeName = new Set<string>(['TITLE', 'LINK', 'META', 'HEAD', 'SCRIPT', 'BR', 'HR', 'STYLE', 'MARK']);
26+
const ignoreClassName = `eh-syringe-ignore`;
27+
const skipElementMatcher = `.${ignoreClassName}, .${ignoreClassName} *`;
28+
2529
declare global {
2630
interface Window {
2731
toggle_advsearch_pane: (b: HTMLElement) => void;
@@ -157,7 +161,6 @@ export class Syringe {
157161
tags.forEach((t) => t.translate(tagMap));
158162
}
159163
documentEnd = false;
160-
readonly skipNode = new Set<string>(['TITLE', 'LINK', 'META', 'HEAD', 'SCRIPT', 'BR', 'HR', 'STYLE', 'MARK']);
161164
config = this.getAndInitConfig();
162165
observer?: MutationObserver;
163166

@@ -307,12 +310,10 @@ export class Syringe {
307310
}
308311

309312
translateNode(node: Node): void {
310-
if (
311-
!node.nodeName ||
312-
this.skipNode.has(node.nodeName) ||
313-
(node.parentNode != null && this.skipNode.has(node.parentNode.nodeName)) ||
314-
(isElement(node) && node.matches('.eh-syringe-ignore, .eh-syringe-ignore *'))
315-
) {
313+
const { nodeName } = node;
314+
if (!nodeName || skipNodeName.has(nodeName)) return;
315+
if (node.parentNode && skipNodeName.has(node.parentNode.nodeName)) return;
316+
if (isElement(node) ? node.matches(skipElementMatcher) : node.parentElement?.matches(skipElementMatcher)) {
316317
return;
317318
}
318319

@@ -485,18 +486,13 @@ export class Syringe {
485486

486487
if (isElement(node, 'div') && node.id === 'gdd') {
487488
/* E-Hentai-Downloader 兼容处理 */
488-
this.cloneAndPrependElement(node);
489-
this.cloneAndPrependElement(node.firstElementChild!, (el) => {
490-
const clone = document.createElement('div');
491-
clone.textContent = el.textContent;
492-
return clone;
493-
});
489+
this.cloneAndPrependElement(node.firstElementChild!);
494490
}
495491
}
496492

497493
private cloneAndPrependElement<E extends Element, C extends Element = E>(el: E, cloneNode?: (el: E) => C): C {
498494
const clone = cloneNode ? cloneNode(el) : (el.cloneNode(true) as C);
499-
clone.classList.add('eh-syringe-ignore');
495+
clone.classList.add(ignoreClassName);
500496
clone.setAttribute('hidden', '');
501497
if (clone.id) clone.id = `ehs-clone-${clone.id}`;
502498
clone.querySelectorAll('[id]').forEach((node) => {

0 commit comments

Comments
 (0)