动漫备用源失败时清除默认备用源设置

This commit is contained in:
mtvpls
2026-05-28 21:56:46 +08:00
parent 93ea31b546
commit 4b79152fa6
3 changed files with 60 additions and 0 deletions
+45
View File
@@ -233,6 +233,47 @@ export function markBangumiImageFallbackActive(): void {
);
}
function normalizeComparableUrl(url: string): string {
if (typeof window === 'undefined') return url;
try {
return new URL(url, window.location.href).href;
} catch {
return url;
}
}
export function clearBangumiImageFallbackCacheIfFailed(
target: HTMLImageElement,
originalUrl: string
): boolean {
if (!originalUrl || !isBangumiImageUrl(originalUrl)) {
return false;
}
const fallbackUrl = getBangumiImageFallbackUrl(originalUrl);
if (!fallbackUrl) {
return false;
}
const normalizedFallbackUrl = normalizeComparableUrl(fallbackUrl);
const failedUrls = [target.currentSrc, target.src]
.filter(Boolean)
.map(normalizeComparableUrl);
const isFallbackFailure =
target.dataset.bangumiBackupTried === 'true' ||
failedUrls.includes(normalizedFallbackUrl);
if (!isFallbackFailure) {
return false;
}
target.dataset.bangumiBackupFailed = 'true';
delete target.dataset.bangumiBackupTried;
clearBangumiImageFallbackCache();
return true;
}
function isBangumiImageFallbackActive(): boolean {
if (typeof window === 'undefined') return false;
@@ -329,6 +370,10 @@ export function tryApplyBangumiImageFallback(
return false;
}
if (target.dataset.bangumiBackupFailed === 'true') {
return false;
}
const fallbackUrl = getBangumiImageFallbackUrl(originalUrl);
if (
!fallbackUrl ||