Autor | Zpráva | ||
---|---|---|---|
janbarasek Profil |
#1 · Zasláno: 22. 7. 2014, 18:57:04
Ahoj,
v prohlížeči Chrome jsem vypozoroval chybné chování cookies v JavaScriptu, v jiných prohlížečích se tento problém nevyskytuje. Mějme následující živou ukázku (zjednodušenou): <!doctype HTML5> <html> <head> <title>Živá ukázka - chybné chování cookies v Chrome</title> <meta charset="UTF-8"> </head> <body> <script type="text/javascript" > function set_cookies (names, values) { document.cookie=names+'='+values; return 0; } function get_cookies (cook_name) { var set_cookies = new Array, search_cookies = new Array; set_cookies = document.cookie.split("; "); for (i in set_cookies) { search_cookies = set_cookies[i].split("="); if (search_cookies[0] == cook_name) return search_cookies[1]; } } set_cookies('test', 10); // definice nové cookies document.write(get_cookies('test')); // vypsání hodnoty cookies </script> </body> </html> Účel testovacího scriptu je vytvoření nové cookies s názvem "test", která bude obsahovat číselnou hodnotu "10". Funguje to, jenom v Chromu to vypisuje hlášku "undefined". Nějaké návrhy, jak toto řešit? |
||
Fisir Profil |
Reaguji na janbaraska:
Chrome nepoužívám, takže mám trochu zastaralejší verzi (34.0.1797.2), ale funguje to. Jenom jsem zrušil všechny tagy (kromě <script> ), včetně doctype . Nevím, možná mu vadí ta přílišná nakloněnost <!doctype HTML5> .
|
||
janbarasek Profil |
#3 · Zasláno: 22. 7. 2014, 22:57:52
Fisir:
Mám verzi 34.0.1847.116 Ubuntu 14.04 aura (260972) (tvrdí nastavení). Co se týče toho doctype, tak věřím, že na chování nemá nejmenší vliv, protože v ostatních prohlížečích vše funguje. Zajímavé také je, že funkce "zkontrolovat prvek" neukazuje žádnou chybovou hlášku. Jindy totiž v případě nedefinnované proměnné vždy ukazuje místo, kde k chybě došlo. Existuje nějaký online nástroj na odhalování podobných chyb? Nějaký validátor? Docela bych potřeboval, aby bylo vše funkční, protože řešení běžící jen někde není dle mého názoru řešení - protože existuje minimálně jeden další člověk, komu to také nemusí fungovat. |
||
_es Profil |
#4 · Zasláno: 22. 7. 2014, 23:49:20
janbarasek [#1]:
<!doctype HTML5> má asi rovnaký efekt ako by tam žiadna taká značka nebola, teda prepnutie prehliadača do „Quirk módu“ ( Módy prohlížečů). Na fungovanie cookies to asi vplyv nemá.
|
||
Chamurappi Profil |
Reaguji na janbaraska:
„Jindy totiž v případě nedefinnované proměnné vždy ukazuje místo, kde k chybě došlo.“ Tady nejde o nedefinovanou proměnnou. Funkce vrací undefined , protože nedošlo k return u na řádku 18 (a undefined je výchozí návratová hodnota).
Zkoumal jsi, proč přesně dostáváš undefined ? Tedy ve kterém kroku je problém? Zkus si třeba vypsat alert em document.cookie , abys viděl, jak vypadá celý řetězec, který get_cookies zpracovává.
„Živá ukázka“ Dovolím si podotknout, že tato ukázka moc živá není. Spouštíš tu stránku přes HTTP protokol? Cookies nemusí správně fungovat na file:/// .
„protože řešení běžící jen někde není dle mého názoru řešení“ To je chvályhodný přístup. |
||
Časová prodleva: 10 let
|
0