Produktgalerie bleibt auf “is-loading” hängen (Desktop), Mobile funktioniert

Shopware 6.7.10.2: Produktgalerie bleibt auf “is-loading” hängen (Desktop), Mobile funktioniert

Hallo zusammen,

nach dem Update eines Shops von Shopware 6.7.3.1 auf 6.7.10.2 tritt bei vielen Produkten ein merkwürdiges Problem mit der Produktgalerie auf.

Symptom:

  • Das Hauptbild erscheint beim Laden der Produktdetailseite kurz und verschwindet anschließend.
  • Das Problem tritt nur auf Desktop-Bildschirmgrößen auf.
  • Auf Smartphones bzw. kleinen Viewports funktioniert die Galerie korrekt.
  • Wenn die Seite zunächst in kleiner Breite geladen und anschließend das Browserfenster vergrößert wird, funktioniert die Galerie ebenfalls.

Umgebung:

  • Shopware 6.7.10.2
  • Standardtheme
  • Keine JavaScript-Fehler in der Browserkonsole
  • Thumbnail-Generierung läuft fehlerfrei durch

Analyse:
Das Galerie-Element bleibt dauerhaft auf folgendem Zustand:

row gallery-slider-row is-loading js-gallery-zoom-modal-container js-slider-initialized

Wenn man in der Browserkonsole manuell ausführt:

document.querySelector('.gallery-slider-row').classList.remove('is-loading')

erscheint das Hauptbild sofort und die Galerie wird sichtbar.

Bereits geprüft:

  • Cache geleert
  • Theme neu kompiliert
  • Thumbnail-Generierung erfolgreich durchgeführt
  • Defekte Medien bereinigt
  • Standard-Produktlayout getestet
  • Standardtheme aktiv

Hat jemand ein ähnliches Verhalten festgestellt oder eine Idee, warum die Galerie auf Desktop nicht aus dem Status is-loading herauskommt?

Vielen Dank!

Das Problem ist bekannt: Gallery-slider keeps is-loading class in Firefox/Safari after 6.7.10.0 (regression from #15876) · Issue #16757 · shopware/shopware · GitHub
und fix(storefront): remove native lazy loading from gallery thumbnails by ShopGandalf · Pull Request #16870 · shopware/shopware · GitHub → Lösung kommt mit 6.7.12.0.

// Quick fix for Firefox/Safari gallery crash
document.addEventListener('DOMContentLoaded', () => {
const ua = navigator.userAgent.toLowerCase();
const isAffected = ua.includes('firefox') || ua.includes('iphone') || ua.includes('ipad') || (ua.includes('safari') && !ua.includes('chrome'));

if (isAffected) {
    setTimeout(() => {
        const loaders = document.querySelectorAll('.gallery-slider-row.is-loading');
        loaders.forEach(row => {
            row.classList.remove('is-loading');
            window.dispatchEvent(new Event('resize'));
        });
    }, 1000);
}

});

Kurzer Javascript-Fix den wir akuell laufen haben.

Ich habe mittlerweile die Version 6.7.12.1 installiert. Leider besteht mein Problem weiterhin.

Lösche mal dein Cache im Browser, bzw. teste es im Privaten Modus, bei dem die Dateien neu geladen werden.

Beides schon ausprobiert. Leider keine Änderung.

Soweit ich das auf GitHub sehen kann, wurde die Problemlösung noch nicht veröffentlicht, es ist keine Versionsangabe zu sehen, also in 6.7.12.1 noch nicht umgesetzt.