Autor Zpráva
Witiko
Profil
Píšu si knihovnu jménem JStorage, která umožní práci s cookies, localStorage, globalStorage, userData a flash savedData technologiemi za účelem ukládání dat bez nutnosti zabývání se (ne)dostupností jednotlivých technologií v cílovém prohlížeči. Problém mi dělá mazání cookies v Mozzile. Pakliže spustíte v Mozzile následující script:

document.cookie = "test=test;expires=" + (new Date().getTime() + 3155692597470) + ";domain=" + location.hostname + ";path=/";
document.cookie = "test=test;expires=" + (new Date().getTime() - 1) + ";domain=" + location.hostname + ";path=/";
alert(!!document.cookie.match('(^|;) ?test=([^;]*)(;|$)'));


Bookmarklet: javascript:document.cookie = "test=test;expires=" + (new Date().getTime() + 3155692597470) + ";domain=" + location.hostname + ";path=/";document.cookie = "test=test;expires=" + (new Date().getTime() - 1) + ";domain=" + location.hostname + ";path=/";alert(!!document.cookie.match('(^|;) ?test=([^;]*)(;|$)'));

První řádek vytvoří "infinite" cookie (vyprší za 100 let), druhý se pokusí o smazání cookie (nastavením vypršení na milisekundu před aktuálním datem). Finální alert na třetím řádku však oznamuje, že ke smazání nedošlo, přičemž ani restart browseru nic neřeší. Dělám nějakou naprosto základní chybu?
Chamurappi
Profil
Reaguji na Witika:
Připadá mi zvláštní, že dáváš za expires číslo. Nikdy jsem to důkladněji nezkoušel, ale ve svých skriptech užívám datum.toGMTString().

Píšu si knihovnu jménem JStorage
Také jsem si něco takového kdysi dávno vyrobil. Zajímalo by mě, jak si poradíš s rozsahy platnosti, protože např. behavior userData se v Exploreru částečně váže na aktuální adresář nalistované stránky — kdybys tohle dokázal obejít… to bych nadšeně koukal :-)
_es
Profil
Chamurappi:
metóda toGMTString sa vraj nedoporučuje.
Je nejaký rozdiel, ak by sa použila metóda toUTCString?
Witiko
Profil
Ok, skutečně to tím bylo:
var datum = [new Date(), new Date()];
var current = datum[0].getTime();
datum[0].setTime(current+3155692597470);
datum[1].setTime(current-1);
document.cookie = "test=test;expires=" + datum[0].toUTCString() + ";domain=" + location.hostname + ";path=/";
document.cookie = "test=test;expires=" + datum[1].toUTCString() + ";domain=" + location.hostname + ";path=/";
alert(!!document.cookie.match('(^|;) ?test=([^;]*)(;|$)'));


Takže se nakonec ukázalo, že to opravdu byla "základní chyba". :)

_es:
Zdá se, že žádný:
toGMTString is no longer used and has been replaced by the toUTCString method. - http://developer.mozilla.org/

Chamurappi:
Většinou se snažím soubory stránek kumulovat v jednom adresáři a data, se kterými dané scripty pracují, naházet do podadresářů, takže celkově zatím ani necítím potřebu ten systém nějak obcházet. (Pokud vím, tak HTML5 localStorage, který do knihovny také vkládám, se váže pouze na jednotlivé stránky) Jen se asi zatím vykašlu na flash, protože by tím tak trochu zanikla lighweightness té knihovny. (nutnost čekat na načtení DOMu, házet do stránky object u kterého není prakticky žádný způsob jak předem javascriptem zjistit, jestli se vůbec načte, atd. A hlavně - nemůžu nějak stáhnout vývojové prostředí Flashe. Buď hledám pod špatným názvem, nebo nevím. :D)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0