Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 20 von 20
  1. #16
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.739

    AW: Wie speicher und lade ich Strings in Cookies?

    Ja.

  2. #17
    noidea001 ist offline Mitglied
    registriert
    21-02-2010
    Beiträge
    27

    Post AW: Wie speicher und lade ich Strings in Cookies?

    Vielleicht bringt es dem Thema ja was ein "Praxisbeispiel" zu haben.

    Dieses Script benötigt Cookies, und hatte diese auch schonmal bekommen NUR ist das vorige etwas hakig, es funktioniert nur korrekt wenn die Cookies per "Body Onload" geladen werden und dann auch nur mit Verzögerung bis der Body geladen hat, dann wird von einem Skin auf den anderen gewechselt. Das alte Thema ist hier zu finden.

    Code:
    <script type="text/javascript">
    function swapContent(num) {
    for(i=0; obj = document.getElementById('content'+ i); ++i)
    obj.style.display = 'none';
    document.getElementById('content'+ num).style.display = 'inline';
    return false;
    }
    </script>
    
    <a href="#" onclick="return swapContent(0)">1</a>&nbsp;&nbsp;<a href="#" onclick="return swapContent(1)">2</a>&nbsp;&nbsp;<a href="#" onclick="return swapContent(2)">3</a>
    Wie gesagt, wenn es als Praxisbeispiel taugt, wäre es cool wenn man das benutzen kann, denn mir ist mit JS und Cookies noch alles echt völlig unklar.

  3. #18
    Avatar von jspit
    jspit ist offline Lounge-Member
    registriert
    19-06-2009
    Beiträge
    1.712

    AW: Wie speicher und lade ich Strings in Cookies?

    Bei Nutzung der Cookie-Verwaltung von kkapsner hab ich als value einen numerischen Wert anstelle eines strings übergeben, und promt dafür die Quittung in Form eines Fehlers erhalten. Eine kleine Erweiterung akzeptiert jetzt auch numerische Werte und Datumsobjecte. Datumsobjecte werden mit toLocaleString() umgesetzt, für sonstige unsinnige Werte wird ein leerer String genommen. Beispiele:
    Code:
    	cookie.setValue("Wert",4532);
            cookie.setValue("Datum",new Date());
    Hier der komplette Code der erweiterten Cookie-Verwaltung:

    Code:
    var cookie = {
            // cookie verwaltung von kkapsner aus forum.jswelt.de
            // gering modifiziert
            // return value if the name is not stored in document.cookie defaultReturnValue: null,
            // this should be true if you want to be sure, that all your special characters (like ä, ö, ü, ², µ, €, \n, \t, ...) are treated in a safe way - but with this option enabled the string stored in the cookie can get much longer
            secureEncoding: true,
    
            update: function(){
                    var cString = document.cookie.toString();
                    var werte = cString.split(";");
                    for (var i = 0; i < werte.length; i++){
                            var wert = werte[i].split("=");
                            var name = this.decode(wert[0].replace(/^\s+/, ""));
                            var value = this.decode(wert.slice(1).join("="));
                            this[name] = value;
                    }
                    return this;
            },
    
            getValue: function(name){
                    this.update();
                    if (typeof(this[name]) == "string") return this[name];
                    return this.defaultReturnValue;
            },
    
            setValue: function(name, value, att){
                    //att can contain this attributes: expire, domain, path, secure
                    if(value){
                      if(typeof value == "number") value = value.toString(10);
                      if(typeof value == "object"){
                         if(value.toString(10).length > 20) value = value.toLocaleString();
                              }
                       if(typeof value != "string") value="";//alle sonst Objecte
                      }
                    else value="";
                    var insert = this.encode(name) + "=" + this.encode(value);
                    if (att){
                    if (att.expire && att.expire.constructor == Date){
                            insert += ";expires=" + att.expire.toGMTString();
                    }
                    if (typeof(att.expire) == "string" && att.expire){
                            insert += ";expires=" + att.expire;
                    }
                    if (typeof(att.domain) == "string" && att.domain){
                            insert += ";domain=" + att.domain;
                    }
                    if (typeof(att.path) == "string" && att.path){
                            insert += ";path=" + att.path;
                    }
                    if (att.secure){
                            insert += ";secure";
                    }
                    }
                    document.cookie = insert + ";";
                    return this;
            },
    
            deleteValue: function(wert, att){
                    if (!att) att = {};
                    att.expire = new Date(0);
                    this.setValue(wert, "", att);
                    if (typeof this[wert] == "string") this[wert] = false;
                    return this;
            },
            encode: function encode(str){
                    if (this.secureEncoding) return str.replace(/([^a-z0-9])/ig, function(m, f){return "+" + f.charCodeAt(0).toString(36) + "/"});
                    return str.replace(/(%|=|;)/g, function(match, f){return "%" + {"%": "%%", "=": "%_", ";": "%."}[f];});
            },
            decode: function decode(str){
                    if (this.secureEncoding) return str.replace(/\+([a-z0-9]+?)\//g, function(m, f){return String.fromCharCode(parseInt(f, 36));})
                    return str.replace(/%(%|_|.)/g, function(match, f){return {"%": "%", "_": "=", ".": ";"}[f];});
            }
    };
    jspit

  4. #19
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.739

    AW: Wie speicher und lade ich Strings in Cookies?

    Stimmt - solwohl als Names als auch als Wert durften nur Strings übergeben werden... Aber ich würde das nicht in der setValue regeln, weil das Verwirrung stifften kann:
    Code:
    var f = 3;
    cookie.setValue("name", f);
    alert(cookie.getValue("name") + 1)
    - ich würde einen TypeError werfen... wie ein Wert in einen String umgewandelt werden soll sollte sich der Nutzer dann selbst überlegen (denkbar wäre auch eine Wrapperfunktion, die dann noch eine JSON-Konvertierung dazwischenschaltet - dann hätte man immer den richtigen Datentyp)

    EDIT: auch ein new String("ein ganz langer Text, der wirklich wirchtig ist...") wird bei dir falsch behandelt...
    Geändert von kkapsner (31-03-2010 um 12:50 Uhr)

  5. #20
    Avatar von jspit
    jspit ist offline Lounge-Member
    registriert
    19-06-2009
    Beiträge
    1.712

    AW: Wie speicher und lade ich Strings in Cookies?

    Zitat Zitat von kkapsner Beitrag anzeigen
    auch ein new String("ein ganz langer Text, der wirklich wirchtig ist...") wird bei dir falsch behandelt...
    Danke, und der Test auf ein Datum ist auch mehr als unglücklich. Der Normalfall für die Übergabe von value ist ein String, auch bei einem Datum gefällt es nicht jedermann wie es per toLocaleString() gemacht wird.
    Mit einem string hat man es selbst in der Hand. Ich bin jedoch kein Freund von "Fehler werfen" und versuche jetzt irgendwas Sinnvolles aus der Übergabe zu machen, wenn was anderes als ein String übergeben wird. Der geänderte Code ist sogar noch etwas kürzer und String-Objecte sollten auch wieder funktionieren (Hab ich selbst noch nie gebraucht).
    Code:
    var cookie = {
            // cookie verwaltung von kkapsner aus forum.jswelt.de
            // modifiziert 01.04.2010 jspit
            // return value if the name is not stored in document.cookie defaultReturnValue: null,
            // this should be true if you want to be sure, that all your special characters (like ä, ö, ü, ², µ, €, \n, \t, ...) are treated in a safe way - but with this option enabled the string stored in the cookie can get much longer
            secureEncoding: true,
    
            update: function(){
                    var cString = document.cookie.toString();
                    var werte = cString.split(";");
                    for (var i = 0; i < werte.length; i++){
                            var wert = werte[i].split("=");
                            var name = this.decode(wert[0].replace(/^\s+/, ""));
                            var value = this.decode(wert.slice(1).join("="));
                            this[name] = value;
                    }
                    return this;
            },
    
            getValue: function(name){
                    this.update();
                    if (typeof(this[name]) == "string") return this[name];
                    return this.defaultReturnValue;
            },
    
            setValue: function(name, value, att){
                    //att can contain this attributes: expire, domain, path, secure
                    if(value){
                      if(value instanceof Date) value = value.toLocaleString();
                      else value = value.toString(10);
                      }
                    else value="";
                    var insert = this.encode(name) + "=" + this.encode(value);
                    if (att){
                    if (att.expire && att.expire.constructor == Date){
                            insert += ";expires=" + att.expire.toGMTString();
                    }
                    if (typeof(att.expire) == "string" && att.expire){
                            insert += ";expires=" + att.expire;
                    }
                    if (typeof(att.domain) == "string" && att.domain){
                            insert += ";domain=" + att.domain;
                    }
                    if (typeof(att.path) == "string" && att.path){
                            insert += ";path=" + att.path;
                    }
                    if (att.secure){
                            insert += ";secure";
                    }
                    }
                    document.cookie = insert + ";";
                    return this;
            },
    
            deleteValue: function(wert, att){
                    if (!att) att = {};
                    att.expire = new Date(0);
                    this.setValue(wert, "", att);
                    if (typeof this[wert] == "string") this[wert] = false;
                    return this;
            },
            encode: function encode(str){
                    if (this.secureEncoding) return str.replace(/([^a-z0-9])/ig, function(m, f){return "+" + f.charCodeAt(0).toString(36) + "/"});
                    return str.replace(/(%|=|;)/g, function(match, f){return "%" + {"%": "%%", "=": "%_", ";": "%."}[f];});
            },
            decode: function decode(str){
                    if (this.secureEncoding) return str.replace(/\+([a-z0-9]+?)\//g, function(m, f){return String.fromCharCode(parseInt(f, 36));})
                    return str.replace(/%(%|_|.)/g, function(match, f){return {"%": "%", "_": "=", ".": ";"}[f];});
            }
    };

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Problem mit cookies
    Von bjacob im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 24-03-2009, 08:37
  2. cookies aktiviert? prüfen mit php
    Von iam_peter im Forum Serverseitige Programmierung
    Antworten: 1
    Letzter Beitrag: 04-09-2007, 22:23
  3. Cookies unter JS => Führender Punkt in Domain
    Von Tachyon im Forum Allgemeines
    Antworten: 0
    Letzter Beitrag: 12-06-2007, 12:37
  4. Cookies bei Voting
    Von slosd im Forum Serverseitige Programmierung
    Antworten: 6
    Letzter Beitrag: 26-03-2007, 19:09
  5. Cookies online anders?
    Von sanchez im Forum Serverseitige Programmierung
    Antworten: 12
    Letzter Beitrag: 23-09-2002, 16:54

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •