Autor Zpráva
Mufna
Profil
Zdravím Vás. Na webu bez registrace uživatelů bych potřeboval udělat, aby navštívené odkazy (při jedné návštěvě webu uživatelem) změnily barvu (byly tzv. vysvícené). Jde to sice udělat jednoduše přes CSS a pseudotřídu a:visited, ale to pak v prohlížeči zůstává a při další návštěvě třeba druhý den by už byly všechny odkazy navštívené předešlý den vysvícené. To nechci, já chci, aby zůstávaly vysvícené pouze při jedné konkrétní návštěvě webu, při další už by se zase "začínalo od nuly". Zatím si myslím, že by k tomu šlo využít SESSION. V CSS jsem si zatím nadefinoval třídu a.visited {color:vysvícená barva}.
AM_
Profil
Mufna:
Nějak mi ve tvém postu chybí otázka, tak nevím, na co odpovědět.
Tohle bych se asi snažil řešit pomocí javascriptu - nevím sice, jak, ale možná by se ti mohlo podařit (hledal bych v objektu history) nějak z prohlížeče dostat navštívené adresy a čas návštěvy a z toho odkazům dynamicky třídu změnit.
Řešit to na straně PHP by bylo asi podstatně složitější nebo pracnější - musel bys každý odkaz nějak unikátně označit, nebo například celý výstup nacpat do output bufferu, v něm pak najít všechny odkazy a podle jejich hrefu zjistit, zda byla stránka navštívena.
Mufna
Profil
AM_

Otázka zněla: jak mám udělat to, aby při návštěvě uživatele na webu se již prohlédnuté stránky (odkazy na ně v menu) zobrazily jinou barvou než normální odkazy + hover. Ale poradil si mi i bez toho :-) ... takže díky. Javascript není moje parketa, takže to zkusím asi řešit přes PHP
AM_
Profil
Mufna:
Javascript není moje parketa,
seznam se s jQuery, myslím, že to zvládneš rychleji, než bys vypotil řešení v PHP.
Chamurappi
Profil
Reaguji na AM:
možná by se ti mohlo podařit (hledal bych v objektu history) nějak z prohlížeče dostat navštívené adresy a čas návštěvy
To tedy nemohlo. Z objektu history můžeš zjistit nanejvýš to, o kolik stránek nazpět se může uživatel vrátit v aktuálním okně, nic víc. JavaScript nevidí do historie.

seznam se s jQuery
Samozřejmě, úplně všechno vyřeší jQuery :-)
AM_
Profil
Chamurappi:
Z objektu history můžeš zjistit nanejvýš to, o kolik stránek nazpět se může uživatel vrátit v aktuálním okně, nic víc.
Aha, tím pádem javascript padá, říkal jsem, že nevím, že je to pouze to, co bych já hledal jako první :)
//UPDATE: sice je to šílené, ale jde to :) http://www.merchantos.com/makebeta/tools/spyjax/

Samozřejmě, úplně všechno vyřeší jQuery :-)
ani ne tak vyřeší jako ušetří 3/4 času strávené nadáváním na vestavěné funkce javascriptu.
Chamurappi
Profil
Reaguji na AM:
sice je to šílené, ale jde to
Jde zjistit, zda konkrétní stránka byla někdy navštívená (ne kdy), zneužitím pseudotřídy :visited z CSS. Kdyby chtěl Mufna obarvit :visited odkazy, proč by k tomu měl používat JavaScript?

ušetří 3/4 času strávené nadáváním na vestavěné funkce javascriptu
Proč bych na ně měl nadávat?
AM_
Profil
Chamurappi:
Jde zjistit, zda konkrétní stránka byla někdy navštívená
ano, to jsem myslel. Vím, že Mufnovi to nepomůže, jen jsem reagoval na to, že jsi říkal, že historií procházet nejde.

Proč bych na ně měl nadávat?
Zatím jsem nepotkal moc programátorů, kteří by se v psaní JS nějak vyžívali. Uznej, co je intuitivnější a vypadá lépe?
$('#content td').html('bunka smazana');
//versus
var bunky = document.getElementById('content').getElementsByTagName('td');
for (int i = 0; i < bunky.length; i++){
  bunka[i].innerHTML = 'bunka smazana';
}

$('#content .smazat').html('smazano');
//nechci ani pomyslet
Chamurappi
Profil
Reaguji na AM:
jen jsem reagoval na to, že jsi říkal, že historií procházet nejde
Dokáže to jen CSS a hodně omezeně — jak ostatně uvádí Mufna. Takže nejde.

Uznej, co je intuitivnější a vypadá lépe?
Druhá varianta je efektivnější (ten cyklus bych napsal spíš for(var i = 0, bunka; bunka = bunky[i]; i++)).
Nejlépe vypadá označSmazanéBuňky("content"), pokud záleží na kráse řídící části kódu.
Osobně bych raději změnu stavu tabulky vyjádřil změnou třídy (tj. jedním řádkem), ne kompletním přeoráním innerHTML buněk.
bohyn
Profil
Mufna:
v PHP můžeš linkům přidat parametr, který se bude každý den měnit - třeba datum. Nebo nějaký náhodný řetězec a ten ukládat do session cookie.
Bude to ale dělat problém vyhledávačům, pro ty to musíš vyřešit bez toho parametru.

Edit: nebo přidávat to unikátní id za #

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0