# 5.3 Asynchrones Laden von Javascript in der Lage window.onload zu stören?

**URL:** <https://forum.shopware.com/t/5-3-asynchrones-laden-von-javascript-in-der-lage-window-onload-zu-storen/47340>\
**Category:** Programmierung\
**Created:** [6. August 2017 um 10:53 UTC](https://forum.shopware.com/t/5-3-asynchrones-laden-von-javascript-in-der-lage-window-onload-zu-storen/47340 "2017-08-06T10:53:28Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![zenit](https://avatars.discourse-cdn.com/v4/letter/z/a87d85/32.png) [@zenit](https://forum.shopware.com/u/zenit)\
**Post date:** [6. August 2017 um 10:53 UTC](https://forum.shopware.com/t/5-3-asynchrones-laden-von-javascript-in-der-lage-window-onload-zu-storen/47340/1 "2017-08-06T10:53:28Z")

</div>

Hallo Community,&nbsp;

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:

&nbsp;

```
;(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);

```

&nbsp;

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.&nbsp;

**Besonderheiten** :&nbsp;

- Shop läuft auf 5.3 - vorher keine Probleme
- Asynchrones Laden von Javascript ist&nbsp;mit Update auf&nbsp;SW 5.3 ist eingeschaltet
- Der Shop wird derzeit über [www.shopname.de/shopware.php](http://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

&nbsp;

**Fragen** :

1. Ist das Asynchrone Laden von Javascript ein Problem für window.onload? **Edit: Ja**
2. sollte asyncReady abgefragt werden und dann das Script ausgeführt werden? Siehe Doku:&nbsp;[Shopware 5 upgrade guide](https://developers.shopware.com/developers-guide/shopware-5-upgrade-guide-for-developers/#asynchronous-javascript)
3. 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?

&nbsp;

Vielen Dank schon mal für Eure Hilfe!

---

<div class="post-metadata">

**Author:** ![zenit](https://avatars.discourse-cdn.com/v4/letter/z/a87d85/32.png) [@zenit](https://forum.shopware.com/u/zenit)\
**Post date:** [7. August 2017 um 07:53 UTC](https://forum.shopware.com/t/5-3-asynchrones-laden-von-javascript-in-der-lage-window-onload-zu-storen/47340/2 "2017-08-07T07:53:14Z")

</div>

Hallo Community,

ich fasse obiges nochmal konkret zusammen.

Durch das asynchrone Laden von Javascripten in Shopware 5.3 grefit das event **window.onload** beim aller ersten Page Load nicht mehr. Der Rest des oben abgebildeten Jquery Plugins hingegen schon. Beim erneuten Laden der Seite ist das kein Problem mehr. Nach Löschen der im Browser gespeicherten Daten (Cookies, Caches, Sessions) kann man das problem erneut provozieren.

&nbsp;

Wie kann nun das jQuery Plugin dahingehend erweitert werden, dass window.onload auch beim allerersten Laden greift?

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [8. August 2017 um 08:30 UTC](https://forum.shopware.com/t/5-3-asynchrones-laden-von-javascript-in-der-lage-window-onload-zu-storen/47340/3 "2017-08-08T08:30:04Z")

</div>

Hallo zenit,

möglicherweise könntest Du dein Script außerhalb des ansychronen Ladens einbinden und mit

```
document.asyncReady(function() {
    // do your magic here  
});

```

abwarten, bis jQuery geladen ist.

Wie man das aber in die Plugin-Struktur von Shopware einbindet, weiß ich auch nicht, hier hätte ich das einfach über einen Block selbst in den DOM eingebaut.

---

<div class="post-metadata">

**Author:** ![zenit](https://avatars.discourse-cdn.com/v4/letter/z/a87d85/32.png) [@zenit](https://forum.shopware.com/u/zenit)\
**Post date:** [8. August 2017 um 20:05 UTC](https://forum.shopware.com/t/5-3-asynchrones-laden-von-javascript-in-der-lage-window-onload-zu-storen/47340/4 "2017-08-08T20:05:46Z")

</div>

Okay, mein Weg wäre nun folgender:

```
{literal}

    if (typeof asyncReady !== "undefined") {
        document.asyncReady(function () {
            console.log('asyncReady');

            // do your magic here
        });
    }

{/literal}

```

- baue ich in den Block {block name=“frontend\_index\_header\_javascript”} ein. Warum heißt dieser Block eigentlich noch(?) frontend\_index\_ **header** \_javascript wenn er doch im Footer liegt
- mit&nbsp;if (typeof asyncReady !== “undefined”) prüfe ich, ob es die Funktion gibt, um auch noch SW 5.0 - 5.2 zu unterstützen.&nbsp;

&nbsp;

Gibt es einen geschickteren Weg?&nbsp;

---

<div class="post-metadata">

**Author:** ![codiverse](https://avatars.discourse-cdn.com/v4/letter/c/b782af/32.png) [@codiverse](https://forum.shopware.com/u/codiverse)\
**Post date:** [1. Dezember 2017 um 10:45 UTC](https://forum.shopware.com/t/5-3-asynchrones-laden-von-javascript-in-der-lage-window-onload-zu-storen/47340/5 "2017-12-01T10:45:45Z")

</div>

Hi,

wer sein JS in einer TPL Datei einbindet, kann auch mit

`{if $theme.asyncJavascriptLoading}true{/if}` arbeiten.
