jQuery nur einmal ausführen - beim Aufrufen der Seite (Preloader)

  • Hallo,

    ich brauche mal kurz Euer Expertenwissen.

    Es geht um die Seite h2weiss.amedia-wenzel.de

    Dort soll, wenn man die Seite aufruft eine Art Preloader angezeigt werden. Dazu hab ich folgenden Code eingefügt:

    Das css dazu sieht folgendermaßen aus:

    Das funktioniert soweit auch ganz gut. Allerdings wird "der Preloader" immer wieder angezeigt. Also nicht nur beim Aufrufen der Seite, sondern auch wenn man auf einen Link auf der

    Seite klickt.

    Wie kann ich das Script nur 1 mal aufrufen, also beim 1. Laden der Seite?

  • sondern auch wenn man auf einen Link auf der

    Seite klickt.

    Ja da immer die active Klasse da sein wird, deine Seite wird ja immer wieder neu genieriert. Du müsstest aus dem JS ggfs an die session weitergeben das dieser pre loader bereits einmal gelaufen ist. Und dann nicht eine Klasse sondern die session abfragen ob der pre loader bereits gelaufen ist oder nicht.

  • Ja das JS ist ja nur auf der aktuellen Seite aktiv sobald du weiter navigierst wird die Seite neu generiert und die Variable bzw. deren gesetzter Wert ist wieder weg. Über mehrere Seiten hinweg auf Variablen zuzugreifen müssten diese in die DB oder in die Session geschrieben werden.

    Das könnte mann z.B. mit einem ajax call machen. Also einer PHP Funktion welche dann mittels

    Code
    $session = $this->getApplication()->getSession();
    $session->get('uniquesessionkey', $value);

    den aktuellen Wert ausliest und dann über

    Code
    $session = $this->getApplication()->getSession();
    $session->set('uniquesessionkey', $value);

    Den Wert in die Joomla session des aktuellen Users schreibt.

    Vielleicht kommst du als Entwickler mit dieser Dokumentation schon weiter: Using Joomla Ajax Interface – Joomla! Documentation da ist auch ein Beispiel mit der Session.

    Am besten baut man dieses Feature dann auch als Joomla Plugin wo dann die ganzen AJAX Features drin sind und das Plugin dann die Kommunikation mit Joomla macht.

    Ggfs. gibt es für das was du vor hast auch schon ein fertiges Plugin/Modul was dieses Problem schon gelöst hat.

  • Ich hab das jetzt mal so geschrieben. Bin beim suchen auf sessionStorage gestoßen.

    Leider ist die Variable yetVisited immer undefiniert.

  • ggfs kann man auch mit plain JS eine eigene session schreiben und die dann abfragen, damit bewegt man sich dann aber auch direkt außerhalb der session von Joomla und das wäre eher eine Hammer drauf methode.

  • Leider ist die Variable yetVisited immer undefiniert.

    Da hört leider langsam mein JS wissen auf.

    Versuch mal

    Code
    sessionStorage.getItem("visited");

    vs

    Code
    sessionStorage.getItem["visited"];
  • Hmm das übersteigt leider mein JS wissen ggfs kann man da noch etwas weiter googlen wie das mit den sessions funktioniert im plain JS.

    Hab das hier gefunden mit einem Beispiel: Window: sessionStorage property - Web APIs | MDN (mozilla.org)

    Das gibts auch nochmal den unterschied zwischen sessionStorage und localstorage, ggfs. kommst du damit weiter: Window: localStorage property - Web APIs | MDN (mozilla.org)