madeyourday / contao-rocksolid-slider

RockSolid Slider Contao Extension
http://rocksolidthemes.com/de/contao/plugins/responsive-slider
Other
9 stars 7 forks source link

Javascript ans Ende vom Body verschieben #67

Closed Enrica-r closed 4 years ago

Enrica-r commented 4 years ago

Ich versuche meine Page für PageSpeed von Goolge fit zu trimmen. Im head Bereich muss ich wegen Rocksolid-Slider JQuery und rocksolid-slider laden, weil das Sliderobjekt bereit an der Stelle des Sliders initiiert wird. Ich habe zwar gesehen, dass bei fehlendem JQuery ein Listener für "init" zugefügt würde. Dies nützt aber nichts, wenn sich zwei oder mehr Slider auf der Seite mit unterschiedlichen Einstellungen befinden. Eine zentrale Init-Funktion wird noch erschwert weil der Slider keine eindeutige ID bekommt.

Mein Vorschlag für eine Modifikation wäre:

  1. Beim
    der Klasse "mod_rocksolid_slider" wird ein data Attribut (z.B. data-config) eingefügt. Als Wert wird ein eindeutiger Werte (z.B. CRC hash des JSON Config strings) hinzugefügt.
  2. An der Stelle wo heute das initscript ist, wird ein kurzes Javascript eingefügt, welches eine Objekt mit dem JSON Array beinhaltet. Beispiel:
    <spript>windows.ab44f4h5={{JSON Array with config data}}</script>
  3. Das Init Script durchsucht alle Rocksolid Slider Klassen, liest das data Attribut aus und ruft die Funktion init mit dem Wert aus dem data Attribut aus (z.B. init(ab44f4h5)). Damit wird vorher gespeicherte Objekt übergeben.

Oder gibt es bereits heute eine Lösung, die Skripts ans Ende beim Body zu verschieben?

ausi commented 4 years ago

Der Slider unterstützt diesen Anwendungsfall bereits. Die einzige Einschränkung liegt dabei darin, dass die Skripte am Ende des Body nicht anynchorn geladen werden dürfen, da ansonsten der DOMContentLoaded-Event vor dem vollständigen Laden der Skripte ausgeführt wird.

Enrica-r commented 4 years ago

@ausi Danke für den Tipp, Das hätten ich nicht gedacht. Es funktioniert. Eventuell könnte dies noch dokumentiert werden.