Skip to content

Commit f4d6f93

Browse files
fix: clear img srcset on fallback to force browser reload
Removing <source> elements alone doesn't force the browser to re-evaluate the image. Also clear the img's srcset attribute so the browser uses img.src directly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e1cdb85 commit f4d6f93

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

app/src/components/ImageCard.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,11 @@ export const ImageCard = memo(function ImageCard({
181181
}}
182182
onError={(e: React.SyntheticEvent<HTMLImageElement>) => {
183183
const target = e.target as HTMLImageElement;
184-
// Remove <source> elements so browser uses img.src fallback
184+
// Remove <source> elements and clear srcset so browser falls back to plot.png
185185
if (!target.dataset.fallback) {
186186
target.dataset.fallback = '1';
187-
const picture = target.closest('picture');
188-
picture?.querySelectorAll('source').forEach(s => s.remove());
187+
target.closest('picture')?.querySelectorAll('source').forEach(s => s.remove());
188+
target.removeAttribute('srcset');
189189
target.src = image.url;
190190
} else {
191191
target.style.display = 'none';

app/src/components/SpecDetailView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ export function SpecDetailView({
118118
const target = e.target as HTMLImageElement;
119119
if (!target.dataset.fallback) {
120120
target.dataset.fallback = '1';
121-
const picture = target.closest('picture');
122-
picture?.querySelectorAll('source').forEach(s => s.remove());
121+
target.closest('picture')?.querySelectorAll('source').forEach(s => s.remove());
122+
target.removeAttribute('srcset');
123123
target.src = currentImpl.preview_url!;
124124
}
125125
}}

app/src/components/SpecOverview.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ function ImplementationCard({
177177
const target = e.target as HTMLImageElement;
178178
if (!target.dataset.fallback) {
179179
target.dataset.fallback = '1';
180-
const picture = target.closest('picture');
181-
picture?.querySelectorAll('source').forEach(s => s.remove());
180+
target.closest('picture')?.querySelectorAll('source').forEach(s => s.remove());
181+
target.removeAttribute('srcset');
182182
target.src = impl.preview_url!;
183183
}
184184
}}

app/src/pages/CatalogPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,8 @@ export function CatalogPage() {
275275
const target = e.target as HTMLImageElement;
276276
if (!target.dataset.fallback) {
277277
target.dataset.fallback = '1';
278-
const picture = target.closest('picture');
279-
picture?.querySelectorAll('source').forEach(s => s.remove());
278+
target.closest('picture')?.querySelectorAll('source').forEach(s => s.remove());
279+
target.removeAttribute('srcset');
280280
target.src = currentImage.url;
281281
}
282282
}}

0 commit comments

Comments
 (0)