Hallo Community,
ich habe ein Script in einem eigenen kleinen jQuery Plugin, welches gefeuert werden soll, wenn die Seite und deren Bilder und Objekte geladen sind. Darin gibt es eine registerEvents Funktion:
;(function ($, window) {
"use strict";
$.plugin('prefixPluginname', {
defaults: {
},
init: function(value) {
var me = this;
me.$window = $(window);
me.applyDataAttributes();
me.registerEvents();
},
registerEvents: function () {
var me = this;
me.$window.on('load', me.functionname);
$.publish('plugin/prefixPluginname/onRegisterEvents', [me]);
},
functionname: function(event) {
var me = this;
// some action
$.publish('plugin/prefixPluginname/someaction', [me]);
},
destroy: function() {
var me = this;
me._destroy();
},
});
window.StateManager.addPlugin('html', 'prefixPluginname');
})(jQuery, window);
Nun ist es vorgekommen, dass ausschließlich beim ersten Laden eines Shops die Funktion “someAction” nicht ausgeführt wurde. Beim erneuten Laden der Seite jedoch schon.
Besonderheiten :
- Shop läuft auf 5.3 - vorher keine Probleme
- Asynchrones Laden von Javascript ist mit Update auf SW 5.3 ist eingeschaltet
- Der Shop wird derzeit über www.shopname.de/shopware.php aufgerufen --> shopware.php erzeugt einen 404 Fehler in der Netzwerkanalyse EDIT: irrelevant
- Das Problem kann schlecht reproduziert werden. Leeren des Browserchaches, Cookies und Co führen nicht zur Wiederholung des Fehlers - erst einen Tag später konnte dies wieder einmalig reproduziert werden EDIT: Browser Caches, Cookies und Sessions müssen komplett geleert werden
- In der Console erscheint kein Javascript Fehler
Fragen :
- Ist das Asynchrone Laden von Javascript ein Problem für window.onload? Edit: Ja
- sollte asyncReady abgefragt werden und dann das Script ausgeführt werden? Siehe Doku: Shopware 5 upgrade guide
- Wenn 2., kann man das dann auch noch SW 5.2 kompatibel gestalten? z.B.: abfragen ob die Funktion asyncReady exisitert und wenn nicht auf document.ready überspringen oder würde die Abfrage immer bei document.ready landen?
Vielen Dank schon mal für Eure Hilfe!