Autor | Zpráva | ||
---|---|---|---|
Witiko Profil |
#1 · Zasláno: 27. 8. 2010, 17:39:57 · Upravil/a: Witiko
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 |
#2 · Zasláno: 27. 8. 2010, 18:21:44 · Upravil/a: Chamurappi
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 |
#3 · Zasláno: 27. 8. 2010, 18:35:36
Chamurappi:
metóda toGMTString sa vraj nedoporučuje.
Je nejaký rozdiel, ak by sa použila metóda toUTCString ?
|
||
Witiko Profil |
#4 · Zasláno: 27. 8. 2010, 18:57:27 · Upravil/a: Witiko
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) |
||
Časová prodleva: 14 let
|
0