Matthias Scharwies: Cookies-Beispiel funktioniert nicht

Servus!

Das Beispiel in JavaScript/Anwendung_und_Praxis/cookies funktioniert, wenn ich es lokal ausführe.

Sobald es als Beispiel hochgeladen ist, gibt es nur NaN für Zaehler aus. Was könnte das Problem sein?

Hier der direkte Link: Beispiel:JS-Anwendung-cookies.html

Vielen Dank im Voraus.

Matthias Scharwies

--
Es gibt viel zu tun - packen wir's an: ToDo-Liste gewünschte Seiten
  1. Servus!

    Das Beispiel in JavaScript/Anwendung_und_Praxis/cookies funktioniert, wenn ich es lokal ausführe.

    Sobald es als Beispiel hochgeladen ist, gibt es nur NaN für Zaehler aus. Was könnte das Problem sein?

    Hier der direkte Link: Beispiel:JS-Anwendung-cookies.html

    Ich hatte eigentlich gelobt mehr zu testen vor dem posten von Problemen!

    Das Problem tritt nur imm FF45 auf; IE11, Chrome und Safari funktionieren. Was könnte das Problem sein?

    Vielen Dank im Voraus.

    Matthias Scharwies

    Herzliche Grüße

    Matthias Scharwies

    --
    Es gibt viel zu tun - packen wir's an: ToDo-Liste gewünschte Seiten
    1. Tach,

      Ich hatte eigentlich gelobt mehr zu testen vor dem posten von Problemen!

      Das Problem tritt nur imm FF45 auf; IE11, Chrome und Safari funktionieren. Was könnte das Problem sein?

      das Problem tritt in deinem FF45 auf; Einstellungen für Cookies, Privacy-Addons?

      mfg
      Woodfighter

  2. Tach!

    Das Beispiel in JavaScript/Anwendung_und_Praxis/cookies funktioniert, wenn ich es lokal ausführe.

    Sobald es als Beispiel hochgeladen ist, gibt es nur NaN für Zaehler aus. Was könnte das Problem sein?

    Das Script geht davon aus, dass der erste Wert im Cookie der Zaehler ist. Das ist aber keine Gesetzmäßigkeit. Und so liest das Script einen falschen Wert, der keine Zahl ist.

    Man bekommt sowas raus, wenn man den Debugger in den Entwicklertools anwirft. Breakpoint auf die erste ausgeführte Zeile setzen - in dem Fall die erste Zeile in der Funktion init() - und dann schrittweise durchlaufen und die Maus auf die Variablen halten, um zu sehen, was da jeweils drin ist.

    Da man sowieso nicht annehmen kann, dass der erste Wert der gesucht ist, muss/sollte man das Cookie-Zerlegen anders gestalten. Erst am Semikolon split()en, dann durch das Array laufen und die einzelnen Elemente am Gleichheitszeichen split()en und ein Objekt (Ersatz für ein assoziatives Array) erstellen. Nun kann man schauen, ob in diesem Objekt Zaehler enthaltne ist und welchen Wert der hat. Oder einfacher parseInt(cookies.Zaehler) || 0 nehmen. Wenn parseInt 0 oder NaN liefert, kommt die 0 hinter dem || als Ergebnis zurück. So bekommt man immer eine Zahl.

    dedlfix.

    1. Servus!

      Man bekommt sowas raus, wenn man den Debugger in den Entwicklertools anwirft. Breakpoint auf die erste ausgeführte Zeile setzen - in dem Fall die erste Zeile in der Funktion init() - und dann schrittweise durchlaufen und die Maus auf die Variablen halten, um zu sehen, was da jeweils drin ist.

      Ja, da habe ich zu schnell aufgegeben!

      Da man sowieso nicht annehmen kann, dass der erste Wert der gesucht ist, muss/sollte man das Cookie-Zerlegen anders gestalten. Erst am Semikolon split()en, dann durch das Array laufen und die einzelnen Elemente am Gleichheitszeichen split()en und ein Objekt (Ersatz für ein assoziatives Array) erstellen. Nun kann man schauen, ob in diesem Objekt Zaehler enthaltne ist und welchen Wert der hat. Oder einfacher parseInt(cookies.Zaehler) || 0 nehmen. Wenn parseInt 0 oder NaN liefert, kommt die 0 hinter dem || als Ergebnis zurück. So bekommt man immer eine Zahl.

      Vielen Dank, ist geändert!

      dedlfix.

      Herzliche Grüße

      Matthias Scharwies

      --
      Es gibt viel zu tun - packen wir's an: ToDo-Liste gewünschte Seiten
      1. Hallo Matthias Scharwies,

        Da man sowieso nicht annehmen kann, dass der erste Wert der gesucht ist, muss/sollte man das Cookie-Zerlegen anders gestalten. Erst am Semikolon split()en, dann durch das Array laufen und die einzelnen Elemente am Gleichheitszeichen split()en und ein Objekt (Ersatz für ein assoziatives Array) erstellen.

        Du gehst immer noch davon aus, dass der Zähler am Anfang des Cookies steht. Das muss aber nicht sein, zum Beispiel sieht der Cookie bei mir so aus.

        "Zaehler=2; vector-nav-p-tb=true; vector-nav-p-Mitmachen=true; vector-nav-p-Schnell.E2.80.91Index=false; charinsert=0"

        Nicht unbedingt das, was man erwarten würde.

        Nun kann man schauen, ob in diesem Objekt Zaehler enthaltne ist und welchen Wert der hat. Oder einfacher parseInt(cookies.Zaehler) || 0 nehmen. Wenn parseInt 0 oder NaN liefert, kommt die 0 hinter dem || als Ergebnis zurück. So bekommt man immer eine Zahl.

        „Nun“ = „Jetzt erst“!

        Cookies sind irgendwie sowieso bäh in Zeiten von localStorage. Zum einen, weil Sie nicht um die halbe Welt zum Server geschickt werden und zum anderen, weil man einfache Schlüssel-Werte-Paare hat.

        Bis demnächst
        Matthias

        --
        Wenn eine Idee nicht zuerst absurd erscheint, taugt sie nichts. (Albert Einstein)
        1. Cookies sind irgendwie sowieso bäh in Zeiten von localStorage. Zum einen, weil Sie nicht um die halbe Welt zum Server geschickt werden und zum anderen, weil man einfache Schlüssel-Werte-Paare hat.

          Noch etwas Überflüssiges bei Cookies: Das Verfallsdatum. Früher musste man immer mühsam ein Ende in drei Jahrzehnten angeben, denn es kann ja sein, dass jemand drei Jahrzehnte weg bleibt. Daten in Local Storage bleiben dem dummen Nutzer hingegen gleich ewig an der Backe kleben. Recht so!!1

        2. Servus!

          Da man sowieso nicht annehmen kann, dass der erste Wert der gesucht ist, muss/sollte man das Cookie-Zerlegen anders gestalten. Erst am Semikolon split()en, dann durch das Array laufen und die einzelnen Elemente am Gleichheitszeichen split()en und ein Objekt (Ersatz für ein assoziatives Array) erstellen.

          Du gehst immer noch davon aus, dass der Zähler am Anfang des Cookies steht. Das muss aber nicht sein, zum Beispiel sieht der Cookie bei mir so aus.

          "Zaehler=2; vector-nav-p-tb=true; vector-nav-p-Mitmachen=true; vector-nav-p-Schnell.E2.80.91Index=false; charinsert=0"

          Nicht unbedingt das, was man erwarten würde.

          Nun kann man schauen, ob in diesem Objekt Zaehler enthaltne ist und welchen Wert der hat. Oder einfacher parseInt(cookies.Zaehler) || 0 nehmen. Wenn parseInt 0 oder NaN liefert, kommt die 0 hinter dem || als Ergebnis zurück. So bekommt man immer eine Zahl.

          „Nun“ = „Jetzt erst“!

          Ok, wer ich noch mal anschauen!

          Cookies sind irgendwie sowieso bäh in Zeiten von localStorage. Zum einen, weil Sie nicht um die halbe Welt zum Server geschickt werden und zum anderen, weil man einfache Schlüssel-Werte-Paare hat.

          Der Link steht unten, Artikel gibt's auch dazu. Sollte man bei Cookies eine Empfehlung integrieren?

          Bis demnächst
          Matthias

          Herzliche Grüße

          Matthias Scharwies

          --
          Es gibt viel zu tun - packen wir's an: ToDo-Liste gewünschte Seiten
          1. Hallo Matthias Scharwies,

            Cookies sind irgendwie sowieso bäh in Zeiten von localStorage. Zum einen, weil Sie nicht um die halbe Welt zum Server geschickt werden und zum anderen, weil man einfache Schlüssel-Werte-Paare hat.

            Der Link steht unten, Artikel gibt's auch dazu. Sollte man bei Cookies eine Empfehlung integrieren?

            <I>

            Bis demnächst
            Matthias

            --
            Wenn eine Idee nicht zuerst absurd erscheint, taugt sie nichts. (Albert Einstein)