javascript in einer session

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • javascript in einer session

    Da ich hier im Forum neu bin, erst einmal ein Hallo an alle Forenmitglieder.


    Mein Problem:
    Ich habe ein javascript in einer session laufen. Das script soll erst nach dem zweiten Laden der Webseite laufen. Beim Einstieg in die Seite soll das javascript ohne Funktion sein, bzw. im head nicht erscheinen.
    Es soll ab dem zweiten start der Seite zu einem betimmten div gescrollt werden.

    Die session funktioniert auf meinem Desktop PC mit Firefox, jedoch mit keinem anderen Browser. Auch auf meinem Smartphone funktioniert der Code.
    Vielleicht hat einer von Euch eine Idee an was es liegen könnte, dass das javascript nur in Firefox und weder im google chrome, noch im Opera, IE oder Edge läuft.
    Hier mal der code:
    PHP-Code:
    <?php
    // die session_start steht im php Dokument an erster Stelle
    session_start();
    ?>
       <?php // die if Anweisung befindet sich im head des Dokuments    
        
    if (!isset($_SESSION['visited'])) {     echo "";     $_SESSION['visited'] = true;
        } else {
        echo 
    "<script> window.onload = function() {document.getElementById('underslider').scrollIntoView({block: 'start', behavior: 'smooth'})};</script>";
        }
        
    ?>
    Danke schonmal im Vorraus fürs Drüberschaun.

  • #2
    Liegt das Problem jetzt an der Session oder am JavaScript-Code? Das sind ja zwei vollkommen unterschiedliche Baustellen.

    Mal davon abgesehen ist es generelle keine gute Idee PHP-Code und JavaScript-Code zu mischen. JavaScript-Code sollte ausschließlich in JavaScript-Dateien geschrieben werden und hat inmitten von PHP-Code nichts verloren.

    Kommentar


    • #3
      Es lag am javascript. Offensichtlich kann nur der firefox mit "scrollIntoView" umgehen. Beim IE, Opera, Chrome und Edge wird nicht gescrollt sondern der code einfach nur als Ankerlink interpretiert.
      Habs jetzt so gelöst:
      in die session im head:
      Code:
      <?php
          if (!isset($_SESSION['visited'])) {
          echo "";
          $_SESSION['visited'] = true;
          } else {
          echo "<script>
      function scrollToSmoothly(pos, time) {
          var currentPos = window.pageYOffset;
          var start = null;
          if(time == null) time = 500;
          pos = +pos, time = +time;
          window.requestAnimationFrame(function step(currentTime) {
              start = !start ? currentTime : start;
              var progress = currentTime - start;
              if (currentPos < pos) {
                  window.scrollTo(0, ((pos - currentPos) * progress / time) + currentPos);
              } else {
                  window.scrollTo(0, currentPos - ((currentPos - pos) * progress / time));
              }
              if (progress < time) {
                  window.requestAnimationFrame(step);
              } else {
                  window.scrollTo(0, pos);
              }
          });
      }
      </script>";
          }
          ?>
      und im body tag:
      Code:
      onLoad="scrollToSmoothly(document.querySelector('#underslider').offsetTop, 500)"
      Funzt in jedem Desktop-Browser und mobilen Browser.


      Trotzdem Danke für Deine Antwort.

      Kommentar

      Lädt...
      X