Robert Bienert: Cookies überschreiben

Moin!

Das beschriebene Problem existiert nicht mehr, nachdem ich die Split-Anweisung in

var kekse = document.cookie.split('; ');

geändert habe. Allerdings musste ich feststellen, dass KHTML-Browser u.U. (bei mir Safari 1.3.2) die nachträgliche Manipulation gesetzter Cookies per JavaScript nicht mögen – jedenfalls unter Verwendung dieses Codes:

if (document.cookie) {  
    var kekse = document.cookie.split('; ');  
    var w.open('about:blank', '_blank');  
  
    for(i = 0; i < kekse.length; ++i)  
        w.document.write('<input type="text" value="' + kekse[i] +  
            '" size="50">');  
  
    w.document.write('[code lang=html]<button type="button" onclick="
~~~' +  
        '`var ins=document.getElementsByTagName(\'input\');`{:.language-javascript}' +  
        '`for(i=0;i<ins.length;++i)document.cookie=ins[i].value;`{:.language-javascript}' +  
        '`window.close()`{:.language-javascript}`">Speichern</button>`{:.language-html}');  
}  
else  
    alert('Sie haben keine Cookies von dieser Seite.');[/code]  
  
Ist hier irgendwo ein Fehler versteckt bzw. könntet ihr mal bitte dieses Bookmarklet ausprobieren (obiger Code in einer Zeile für Copy&Paste in die Adresszeile):  
  
javascript:if(document.cookie){var kekse=document.cookie.split('; ');var w.open('about:blank','\_blank');for(i=0;i<kekse.length;++i)w.document.write('<input type="text" value="'+kekse[i]+'" size="50">');w.document.write('<button type="button" onclick="var ins=document.getElementsByTagName(\'input\');for(i=0;i<ins.length;++i)document.cookie=ins[i].value;window.close()">Speichern</button>');}else alert('Sie haben keine Cookies von dieser Seite.');  
  
Vielen Dank und viele Grüße,  
Robert
  1. Moi moin!

    [code lang=javascript]if (document.cookie) {
        var kekse = document.cookie.split('; ');
        var w.open('about:blank', '_blank');

    ^^^^^^
    Bitte eine Variable vergeben!

    for(i = 0; i < kekse.length; ++i)
            w.document.write('<input type="text" value="' + kekse[i] +
                '" size="50">');

    w.document.write('<button type="button" onclick="' +
            'var ins=document.getElementsByTagName('input');' +
            'for(i=0;i<ins.length;++i)document.cookie=ins[i].value;' +

    'window.close();return false">Speichern</button>');

    }

    (ungetestet)

    Gruß aus Berlin!
    eddi

    1. Moin!

      var w.open('about:blank', '_blank');
                 ^^^^^^
      Bitte eine Variable vergeben!

      Sorry, typo, eigentlich sollte da auch dies stehen:

      var w = window.open('about:blank', '_blank');

      w.document.write('<button type="button" onclick="' +
              'var ins=document.getElementsByTagName('input');' +
              'for(i=0;i<ins.length;++i)document.cookie=ins[i].value;' +
               'window.close();return false">Speichern</button>');
      }

      (ungetestet)

      An dem zusätzlichen return false liegt es leider auch nicht. Naja, so lange dieses Problem nicht total gravierend für meinen Bookmarklet-Artikel ist, reicht es, im Hinterkopf zu haben, dass es bei KHTML (genauer: KJS) Probleme geben kann.

      Viele Grüße,
      Robert