Autor | Zpráva | ||
---|---|---|---|
aladin Profil * |
#1 · Zasláno: 27. 12. 2012, 23:37:55
zdravím,
potřebuju poradit.. udělal jsem si div,takovou informační tabuli..kterou po kliknutí na křížek tu tabuli odstraní zde je kod: <div id="tabule" style="display:block;">Informace <a href="#" onclick="document.getElementById('id').style.display = 'none';"><img src="images/up.png"></a> </div> jak udělat aby se ta tabule neukazovala do tý doby než vypne prohlížeč/panel..a když zas příjde na tu stránku tak aby se ta tabule znovu ukázala? jediný mě napadlo cookie,ale v tomhle moc dobrej nejsem..já spíš přes session...ale tohle přes session nepujde podle mě. Můžete mě prosím poradit?děkuji |
||
jenikkozak Profil |
#2 · Zasláno: 27. 12. 2012, 23:58:25
aladin:
„ale tohle přes session nepujde podle mě.“ Šlo by to. Pomocí AJAXu bys ale musel serveru sdělit, že uživatel klikl na ten odkaz. Nebo udělat ten odkaz klasicky klikací, na serveru uložit sessionu o tom, že uživatel chce informaci schovat. Ovšem samotné uložení cookie v JS je jednoduché: Uložení cookie javascriptem. A číst ji pak můžeš na serveru, kde se s ní v PHP pracuje stejně jako se sessionou, až na to, že jde o pole $_COOKIE. |
||
aladin Profil * |
#3 · Zasláno: 28. 12. 2012, 00:12:33
no,a jak to dosadím aby to..bylo uložený?a navíc..tam to je udělaný na dny..já bych to potřeboval udělat že pokud ten panel/prohlížeč zavře,a pak to tam znova dá tu stránku tak aby se to ukázalo znova...
|
||
jenikkozak Profil |
#4 · Zasláno: 28. 12. 2012, 00:33:27
aladin:
Pokud při ukládání nastavíš expiraci na nulu nebo ji nenastavíš vůbec, smaže se cookie při zavření okna prohlížeče sama. |
||
aladin Profil * |
#5 · Zasláno: 28. 12. 2012, 00:40:46
takže by to mělo vypadat následovně?
<script> var id=document.getElementById('tabule').style.display = 'none'; var dnu = ; var datum= new Date(); function hide() { datum.setTime(datum.getTime() + 1000 * 60 * 60 * 24 * dnu); document.cookie = "id;expires=" + datum.toGMTString(); } </script> <div id="tabule" style="display:block;">Informace <a href="#" onclick="hide()><img src="images/up.png"></a> </div> |
||
jenikkozak Profil |
#6 · Zasláno: 28. 12. 2012, 11:51:01
Jako základ můžeš mít toto:
<script> function hide(){ document.getElementById('tabule').style.display = 'none'; document.cookie = "id=hidden"; } </script> <div id="tabule" style="display:block;">Informace <img src="images/up.png" onclick="hide()"> </div> |
||
aladin Profil * |
#7 · Zasláno: 28. 12. 2012, 15:34:05
no,ještě jsem si to upravil podle sebe,a zjistil jsem že to i tak nejde..
není blbě v tom ukládání do cookie? document.cookie = "id=hidden"; |
||
aladin Profil * |
#8 · Zasláno: 29. 12. 2012, 00:20:11
už vyřešeno.. díky :)
|
||
aladin Profil * |
#9 · Zasláno: 29. 12. 2012, 11:17:12
tak ne,nevyřešeno...ten cookie trvá dlouho než se objeví..(zatím se mě ještě neobjevil)
když zavřu panel,pak znova spustím tak se to neukáže... <body onload="checkCookie()"> <script> function getCookie(c_name){ var i,x,y,ARRcookies=document.cookie.split(";"); for (i=0;i<ARRcookies.length;i++) { x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); x=x.replace(/^\s+|\s+$/g,""); if (x==c_name) { return unescape(y); } } } function setCookie(c_name,value,exdays){ var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie=c_name + "=" + c_value; } function checkCookie(){ if(getCookie("hidden") == "true"){ document.getElementById('tabule').style.display = 'none'; } } function hide(){ document.getElementById('tabule').style.display = 'none'; setCookie("hidden", "true"); } </script> <div id="tabule" style="display:block;"> <div class="warning"> <img src="http://cdn1.iconfinder.com/data/icons/realistiK-new/48x48/apps/error.png"> </div> <div class="text"> Informace který po kliknutí zmizí!!! WHOO WHOO WHOOO </div> <div class="krizek"> <img src="http://forum.fakaheda.eu/mchat/error.gif" onclick="hide()"> </div> </div> </body> |
||
_es Profil |
#10 · Zasláno: 29. 12. 2012, 12:05:31
aladin:
A kde nastavuješ dobu exspirácie, ako ti radil jenikkozak? |
||
aladin Profil * |
#11 · Zasláno: 29. 12. 2012, 14:16:06
však tu psal že pokud se nastaví na 0 nebo vůbec tak by se to mělo smazat po zavření okna ne?
|
||
_es Profil |
|||
aladin Profil * |
#13 · Zasláno: 29. 12. 2012, 21:01:06
tak..ted jsem z toho jelen.. :D takže...exdays mám přiřadit null nebo to kompletně odstranit?
|
||
_es Profil |
aladin:
„exdays mám přiřadit null“ Neviem odkiaľ si tú funkciu setCookie zobral a nechce sa mi ju analyzovať - vyzerá nejako „pofidérne“ - ako by ju písal nejaký svojrázny programátor. Vieš si snáď nájsť vyhľadávačom plno iných spôsobov nastavenia cookie cez JS, alebo vyskúšať aj na hentej, čo spraví, keď zmeníš parameter - vyzerá to, že naozaj nezvyklo očakáva null .aladin: S tou funkciou ani s jej argumentmi asi problém nebude. Premyslel si si vôbec poriadne logiku tej aplikácie? Vyzerá to, že vlastne nevieš čo chceš - najprv ti vadí, že sa to zobrazuje, potom, že nezobrazuje. „ten cookie trvá dlouho než se objeví..(zatím se mě ještě neobjevil)“ Čo sa neobjavuje ten <div> , či ako sa má „cookie objaviť“?
„když zavřu panel,pak znova spustím tak se to neukáže...“ To je predsa očakávané chovanie - nie? Skúsil si zavrieť všetky okná prehliadača a potom ho znova spustiť? |
||
aladin Profil * |
#15 · Zasláno: 29. 12. 2012, 22:28:57
_es:
funkce má být taková: uživatel příjde na stránku,a ukáže se mu informační tabule...Kde budou různé informace apod.. v tý tabuli bude křížek kterej po kliknutí tabuli schová,a bude schovaná tak dlouho,než neodejde ze stránky. až pak znova příjde,tak se ta tabule znova ukáže. tedka jsem skusil něco jinýho..konstrukce zůstává stejná.. <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-26707783-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { createCookie(name,"",-1); } </script> <div id="tabule" style="text-align:center; background-color:#fff; border:1px solid red; margin-top:2px; width:500px; margin:5px auto; font-size:17px; padding:10px;"> <span style="color:#000; display:inline-block; padding-right:4px; float:right; font-size:30px;" onclick="createCookie('table',1,100); getElementById('tabule').style.display='none'"> ˟ </span> informace </div> ale stejně se to neuloží aby to bylo schovaný.. |
||
preca1 Profil |
#16 · Zasláno: 30. 12. 2012, 10:57:48
Úplně stejný funkce na práci s cookies používam i já, takže vím, že fungujou.
Tvůj problém je zřejmě ten, že když vykresluješ ten div, tak nekontroluješ, jestli má ten element bejt schovanej. Neboli nekontroluješ, jestli už je tam nastavená ta cookie. To můžeš udělat buď v PHP (lepší), nebo v JS (ne tak dobrý, jelikož JS nemusí bejt zapnutej). |
||
jenikkozak Profil |
#17 · Zasláno: 30. 12. 2012, 11:20:21
preca1:
„To můžeš udělat buď v PHP (lepší), nebo v JS (ne tak dobrý, jelikož JS nemusí bejt zapnutej).“ Bez JS v současné podobě nemůže uživatel tabulku skrýt a je málo pravděpodobné, že by během jedné relace nastavení JavaScriptu měnil. aladin: „když zavřu panel,pak znova spustím tak se to neukáže...“ Dej si při testování pozor na to, jak dlouho trvá ta relace. Záleží na nastavení prohlížeče. Pokud zavřeš jednu záložku (panel, tab) a okno prohlížeče necháš otevřené, relace v prohlížečích (ve výchozím nastavení) zůstává zachována. A pokud máš v prohlížeči nastavené zachování relace (bývá to spojeno s obnovováním otevřených záložek - tedy s nastavením, zda se má po zapnutí prohlížeče otevřít nová záložka nebo ty otevřené naposledy), tak se ti ta dočasná cookie nesmaže ani při zavření okna prohlížeče. (Myslím, že záleží na tom, za jak dlouho prohlížeč znovu spustíš, nevím, nezkoumal jsem to.) |
||
Časová prodleva: 3 dny
|
|||
_es Profil |
#18 · Zasláno: 2. 1. 2013, 09:18:15
aladin:
> bude schovaná tak dlouho,než neodejde ze stránky. > až pak znova příjde,tak se ta tabule znova ukáže. Problém bude asi v tom definovať, čo znamená „odísť zo stránky“ a „prísť na stránku“. Keď navštívim stránku, potom zadám v tom istom okne/karte inú adresu a potom sa na stránku vrátim späť došlo k „odídeniu“ a „prídeniu“ na stránku? A iné podobné prípady? Ak ti nevyhovuje riešenie cez cookie, musíš si vymyslieť nejaké iné. |
||
Časová prodleva: 11 let
|
0