JS mit PHP in Website einschließen, aber verzögert ausführen (defer)

  • Ich hatte jemanden mit der Anpassung meiner Website beauftragt. Bsis der Site ist das Joomla-Standard-Template Protostar. In dessen index.php hat der Programmierer ziemlich zu Beginn mittels PHP die nötigen Scripte includiert in der Form:

    Code
    JHtml::_('script', 'plyr.min.js', array('version' => 'auto', 'relative' => true));
    JHtml::_('script', 'template.js', array('version' => 'auto', 'relative' => true));
    JHtml::_('script', 'custom.js', array('version' => 'auto', 'relative' => true));
    JHtml::_('script', 'inline-box.js', array('version' => 'auto', 'relative' => true));

    Nun möchte ich ein weiteres Script anfügen, mit dem meine Matomo Anlytics den Besuch der Seite registrieren. Das ist auch gelungen mit:

    Code
    JHtml::_('script', 'matomo-id-3.js', array('version' => 'auto', 'relative' => true));

    Leider benötigt dieser JS-Aufruf eine ziemliche Laufzeit, in der der Seitenaufbau in Teilen sehr verzögert wird. Deshalb möchte ich in diese Zeile die Eigenschaft "defer" einfügen, damit der Browser nicht auf die Ausführung des Scripts warten muss.


    Frage: Wie / wo muss ich die Eigenschaft "defer" in den oben zitierten Code einfügen?

  • Ich danke dir herzlich, es scheint zu funktionieren. Ich beobachte aber immer noch eine unangenehme Verzögerung, die mit dem Script zusammen hängt. Die Ausführung des Script wird je nach Browser-PlugIn (uBlockOrigin und uBlockMatrix) an der Ausführung gehindert. Dennoch wartet der Browser ca. 1 Sekunde, "ob da noch was kommt".

    Jedenfalls wird das png-Bild, das eigentlich als Header auf meiner Website erscheinen soll, erst nach dieser Zeit dargestellt. In der Konsole von Firefox unter Netzwerkanalyse ist auch deutlich zu sehen, dass das Script blockiert wird und erst nach einer Pause dieses Bild geladen wird, obwohl es doch ziemlich oben im Seitenquelltext geladen wird.

    Ziel war aber für mich, dass auch (und gerade) dieses Bild zusammen mit der ganzen Site geladen wird und das Script wirklich erst ganz zuletzt einen Einfluss haben darf. Deshalb ja "defer".

    Im Seitenquelltext steht das Header-Bild ziemlich weit oben, so wie es ja auch richtig ist. Erstaunlich, warum es dann so spät geladen wird.


    Leider ist die Test-Website inhaltlich in einem Zustand, dass ich sie hier nicht verlinken kann.

  • Hab den Fehler gefunden: War ne ganz andere Baustelle: JCH Optimize hatte mit seinem LazyLoading zugeschlagen und so das Bild im Header der Seite stark verzögert aufgebaut.

    Und das Matomo-Script wird zurzeit von uBlockOrigin und uMatrix geblockt, egal ob ich es als Inline-Script oder als separate Scriptdatei (wie hier anfangs gefragt) einbinde. Und das liegt evtl. an CORS in der htaccess.


    OT: Wenn ich in der htaccess mittels CORS die externe Verbindung der Website mit dem Matomo-Server zulasse, wird dann dennoch uBlock und uMatrix diese Verbindung blockieren?

  • Ja, ist mir klar und dafür setze ich diese Blocker ja auch selbst in meinen Browsern ein. Denn ich hasse Datensammelei und das ständige Nachladen von Schrott, den ich nicht im Browser haben will, erkenne aber auch an, dass manche Dinge sinnvoll und nötig sein können.


    Bei völliger Blockade kann ich dann allerdings gar keine Besuche mehr auswerten und erkennen, wie attraktiv und interessant meine Website und einzelne Beiträge darauf sind. Das kann es ja auch nicht sein!