xNeTworKx: if (document.cookie) ?

Hallo,
ich hab mich immer schon gefragt was das jetzt GENAU heisst. Bedeutet es 'FALLS Cookies gesetzt wurden', oder 'FALLS der Browser Cookies akzeptiert' ?

  1. ich hab mich immer schon gefragt was das jetzt GENAU heisst. Bedeutet es 'FALLS Cookies gesetzt wurden', oder 'FALLS der Browser Cookies akzeptiert' ?

    Meiner bescheidenen Meinung nach: "FALLS Cookies gesetzt wurden". Der String enthält ja alle Cookieinformationen und ist kein Boolean (true/false). Sind keine Cookies gesetzt, ist der String leer.

    Gruss

    Philipp

    1. Hi,
      Ich versteh leider eins noch nicht ganz, warum in den ganzen Quellcodes das immer so steht :
      if (document.cookie)
       {
        if document.cookie.indexOf("Cookiename");
        /*usw */

      Auf einer meiner Seiten verwende ich es einfach ohne dem
      if(document.cookie) also einfach

      if document.cookie.indexOf("Cookiename");
        /*usw */

      und es funktioniert genauso gut ?

      1. Auf einer meiner Seiten verwende ich es einfach ohne dem
        if(document.cookie) also einfach

        if document.cookie.indexOf("Cookiename");
          /*usw */

        und es funktioniert genauso gut ?

        nun, das if (document.cookie) hat schon seine Berechtigung. Wenn noch kein Cookie gesetzt wurde, wird "automatisch" die else-Direktive ausgeführt. Falls du dies nicht nachprüfst, wirst du beim indexOf eine -1 kriegen (was nicht so "schön" ist).
        Deine Lösung funktioniert auf jeden Fall! - Die andere Lösung ist einfach etwas "eleganter" aufgesplittet/verschachtelt und lässt somit mehr "debugging" zu.

        Viele Grüsse

        Philipp

        1. Ok danke, jetzt blick ich schon mehr durch =)

          1. Ok danke, jetzt blick ich schon mehr durch =)

            vielleicht hab ich auch was übersehen. Aber ich glaube das if (document.cookie) dient wirklich nur zur "Verschönerung". Manchmal verwirrend, diese Estethik.

            Gruss

            Philipp

            1. Hallo Philipp

              vielleicht hab ich auch was übersehen. Aber ich glaube das if (document.cookie) dient wirklich nur zur "Verschönerung". Manchmal verwirrend, diese Estethik.

              naja nicht ganz

              normalerweise prüft man das Vorhandensein eines Objektes bevor man eine Objektmethode darauf anwendet. document.cookie liefert im Normalfall einen leeren String zurück, wenn kein Cookie vorhanden ist. Sicher sein kannst du dir jedoch darüber nicht. Eine schlecht programmierte (oder veraltete) Browserversion könnte da durchaus statt eines leeren Stringobjektes z.B. einen Wahrheitswert wie false zurückliefern und die Typenkonvertierung nicht sauber ausführen. Darauf angewandte Stringmethoden könnten unter Umständen für Fehler sorgen. Normalerweise gehört es - vorallem in JavaScript - zu einem guten Programmierstil vorher abzuprüfen, ob das gewünschte Objekt tatsächlich existiert.

              Als Verschönerung würde ich es nicht bezeichnen, sondern eher als eine zusätzliche Sicherheit, ob das gewünschte Objekt tatsächlich eistiert.

              Viel Grüße

              Antje

              1. Hi, ok alles klar jetzt =)

              2. vielleicht hab ich auch was übersehen. Aber ich glaube das if (document.cookie) dient wirklich nur zur "Verschönerung". Manchmal verwirrend, diese Estethik.

                normalerweise prüft man das Vorhandensein eines Objektes bevor man eine Objektmethode darauf anwendet. document.cookie liefert im Normalfall einen leeren String zurück, wenn kein Cookie vorhanden ist. Sicher sein kannst du dir jedoch darüber nicht. Eine schlecht programmierte (oder veraltete) Browserversion könnte da durchaus statt eines leeren Stringobjektes z.B. einen Wahrheitswert wie false zurückliefern und die Typenkonvertierung nicht sauber ausführen.

                Hm, ja, du hast natürlich recht. Soweit habe ich nicht gedacht ( bin eben an neuere Browserversionen gewöhnt ). Ich muss ehrlich gestehen: Wenn jemand noch den IE 2.0 oder NS 2.x benutzt, ist mir das ***scheiss-egal***. Dann funktioniert es eben bei dem nicht! - Zudem benutzen die meisten Firmen (und die meisten Privatpersonen) IE oder NS der neueren Generationen ( so ab V4.x ).

                Darauf angewandte Stringmethoden könnten unter Umständen für Fehler sorgen. Normalerweise gehört es - vorallem in JavaScript - zu einem guten Programmierstil vorher abzuprüfen, ob das gewünschte Objekt tatsächlich existiert.

                dieses Argument ist vollkommen richtig.

                Als Verschönerung würde ich es nicht bezeichnen, sondern eher als eine zusätzliche Sicherheit, ob das gewünschte Objekt tatsächlich existiert.

                Stimmt.

                Danke für die Berichtigung! - Bin wohl etwas faul, was schönes JavaScript programmieren anbelangt ;)

                Viele Grüsse

                Philipp

                1. Hallo,

                  Danke für die Berichtigung! - Bin wohl etwas faul, was schönes JavaScript programmieren anbelangt ;)

                  Gerade die Faulheit sollte Dich dazu bewegen, sauberen Code zu schreibeb. Meine Erfahrung hat mir immer wieder gezeigt, daß sauberes Programmieren letztendlich viel Zeit und Nerven spart. Beim Suchen der Fehler bzw. beim Korrigieren derselben nämlich.

                  Grüße
                    Klaus

                  1. Danke für die Berichtigung! - Bin wohl etwas faul, was schönes JavaScript programmieren anbelangt ;)

                    Gerade die Faulheit sollte Dich dazu bewegen, sauberen Code zu schreibeb. Meine Erfahrung hat mir immer wieder gezeigt, daß sauberes Programmieren letztendlich viel Zeit und Nerven spart. Beim Suchen der Fehler bzw. beim Korrigieren derselben nämlich.

                    Ja, ich habe die selbe Erfahrung gemacht (zuviele male). Ich versuche es natürlich (oftmals erfolgreich), aber JavaScript bildet ne kleine Ausnahme. JS geht neben perl, asp, mysql, bla bla bla etwas unter ;)
                    Zudem sind die Sachen, welche ich mit JS löse ziemlich primitiv und erfordern keine grosse Aufmerksamkeit (laufen meistens auf anhieb). Z. B. irgend ein Formular mit JS submitten (oder soll ich jedes mal überprüfen, ob document.forms['Main'] existiert, wenn ich es doch selbst in die html-Datei eingebettet habe?).

                    Gruss

                    Philipp

                    1. hallo philipp

                      Zudem sind die Sachen, welche ich mit JS löse ziemlich primitiv und erfordern keine grosse Aufmerksamkeit (laufen meistens auf anhieb). Z. B. irgend ein Formular mit JS submitten (oder soll ich jedes mal überprüfen, ob document.forms['Main'] existiert, wenn ich es doch selbst in die html-Datei eingebettet habe?).

                      hier musst du nicht überprüfen ob document.forms['main'] existiert, sondern ob das js-objekt document.forms exisitiert.

                      gruss siramon

                      1. Zudem sind die Sachen, welche ich mit JS löse ziemlich primitiv und erfordern keine grosse Aufmerksamkeit (laufen meistens auf anhieb). Z. B. irgend ein Formular mit JS submitten (oder soll ich jedes mal überprüfen, ob document.forms['Main'] existiert, wenn ich es doch selbst in die html-Datei eingebettet habe?).

                        hier musst du nicht überprüfen ob document.forms['main'] existiert, sondern ob das js-objekt document.forms exisitiert.

                        Hm, warum wurde denn mein Posting nicht gespeichert? - Na, is ja egal:

                        natürlich müsste man auch auf document.forms testen, aber wenn document.forms['Main'] existiert, existiert auch document.forms. document.forms['Main'] ist ja auch ein Objekt, welches die Properties von document.forms erbt. document.forms ist ein Container für ein Array von forms-Objekten.
                        Zudem wollte ich nur sagen, dass es für meine Zwecke völlig "sinnlos" ist, auch diese Objekte zu prüfen (mal abgesehen von "syntaktisch" korrektem JS). Ich habe diese Formulare ja manuell und im vollen Bewusstsein in die Page eingesetzt, Fehler sind ausgeschlossen, warum also noch überprüfen, ob diese existieren?

                        Viele Grüsse

                        Philipp

                        1. Hallo !

                          Zudem wollte ich nur sagen, dass es für meine Zwecke völlig "sinnlos" ist, auch diese Objekte zu prüfen (mal abgesehen von "syntaktisch" korrektem JS). Ich habe diese Formulare ja manuell und im vollen Bewusstsein in die Page eingesetzt, Fehler sind ausgeschlossen, warum also noch überprüfen, ob diese existieren?

                          Es geht hierbei, wenn ich es richtig verstanden habe, nicht darum, zu prüfen, ob da überhaupt ein Formular auf der Seite ist, sondern vielmehr darum, ob du und der Browser die gleiche Sprache sprechen.

                          Ähnlich wie bei

                          if (document.all)

                          Diese Abfrage dient ja auch nicht dazu, zu gucken, ob da überhaupt ein Dokument ist, sondern ob der Browser von MS ist.

                          Vielleicht kann man es auch so ausdrücken:

                          Man sagt nicht: "Können Sie mir bitte sagen, wie ich zum Bahnhof komme?"
                          sondern: "Entschuldigen Sie," - Reaktion abwarten - "Können Sie mir bitte sagen ..."

                          Wenn als erste Reaktion schon "Kan niet verstaan" kam, kannst du dir den Rest der Frage schenken. Das führt nur zu Mißverständnissen. ;-)

                          Gruß,

                          kerki

                          1. Zudem wollte ich nur sagen, dass es für meine Zwecke völlig "sinnlos" ist, auch diese Objekte zu prüfen (mal abgesehen von "syntaktisch" korrektem JS). Ich habe diese Formulare ja manuell und im vollen Bewusstsein in die Page eingesetzt, Fehler sind ausgeschlossen, warum also noch überprüfen, ob diese existieren?

                            Es geht hierbei, wenn ich es richtig verstanden habe, nicht darum, zu prüfen, ob da überhaupt ein Formular auf der Seite ist, sondern vielmehr darum, ob du und der Browser die gleiche Sprache sprechen.

                            Stimmt. Da hast du völlig recht. Fakt bleibt: Wer NS/IE 2.0 benutzt, soll sich bei mir nicht auf die Seite wagen ;)
                            Ich setzt voraus, dass der Browser JS hat und mit formularen umgehen kann.

                            Ähnlich wie bei
                            if (document.all)

                            komisch, hier hätte ich meine Fehlargumentation sofort bemerkt, bei document.forms bin ich nicht darauf gekommmen.

                            Man sagt nicht: "Können Sie mir bitte sagen, wie ich zum Bahnhof komme?"
                            sondern: "Entschuldigen Sie," - Reaktion abwarten - "Können Sie mir bitte sagen ..."
                            Wenn als erste Reaktion schon "Kan niet verstaan" kam, kannst du dir den Rest der Frage schenken. Das führt nur zu Mißverständnissen. ;-)

                            Ach, jetzt hab ich verstanden was du gemeint hast :-)) [nette "Visualisierung"]

                            Viele Grüsse

                            Philipp