A hálóhelyem születésének idején még volt némi értelme a weblapon alkalmazott technika szerint csoportosítani az oldalakat, ezért hoztam létre a második, menüelemet, ahová ez a weblap is került. Mára a világ megváltozott, és szinte valamennyi weboldalon (ahogy ezen is) többféle számítástechnikai nyelv, többféle technikai megoldás is támogatja a látogatók minél élvezetesebb tájékozódását. Ilyen például a képek és videók látványos megjelenítése, vagy íme egy szélsőséges példa: ma már stíluslapok segítségével rá lehet venni a böngészőt a helyes magyar szövegelválasztásra, ha a gyártója felkészítette rá. De van olyan – Ajax-technikára épülő – eljárás is, amelyik akkor is elválasztja a szöveget, ha a böngészőfejlesztők sajnálták rá az energiát…
Szomorúan tapasztalom, hogy ami eddig remekül működött, ma időnként csütörtököt mond. Hosszú évekig sikeresen használtam egy JavaScript-kódot, mely az oldal aljára biggyesztett egy fontos információt: a HTML-állomány utolsó mentésének időpontját (hogy itt gyorsan rátalálhass, a lap alján pirosra színeztem; közvetlenül a gomb fölött találod). A kód így néz ki:
<script> var last_modified = document.lastModified; last_modified = last_modified.replace(/ .*/, ""); last_modified = last_modified.split("/"); last_modified = last_modified[2] + ". " + last_modified[0] + ". " + last_modified[1] + "."; document.getElementById("last_modified").innerHTML = last_modified; </script>
Az egyik érdemi művelet – az adatszerzés – az első sorban látható. Az
azt követő további három csak a magyar helyesírási szabályokhoz igazítja
az adatokat. A másik fontos sor az utolsó, mely a dátumot a weblap előre
előkészített last_modified
azonosítójú
rovatába helyezi. (Ezzel a módszerrel igyekeztem kizárni a feledékenységem
miatti malőrt, ugyanis több weboldalra fixen felvettem a keltezést, és
előfordult, hogy a tartalom javításakor ezt elfelejtettem pontosítani.
Az ügyetlenségemre kiváló példa az Ajax-metódusok
oldal, melynek alján, az utolsó módosítás rovatában 2009. látható, pedig
– a korszerűsítése előtt – utoljára 2012-ben nyúltam hozzá.)
Az adat eddig arról tájékoztatta a látogatókat, hogy mikor mentettem ki az oldalt utoljára. Ez egyfajta iránymutatást jelentett, hogy a tartalom elévülhetett-e az idők folyamán, fenntartással kell-e fogadni az olvasottakat, vagy frissek-e a közölt információk. Ezért az esetek túlnyomó többségében gondoskodtam a látogatóim tájékoztatásáról. Mára ez az igyekezetem hiábavalóvá vált, mert a szkript a valós adat helyett a mostani látogatásod aktuális időpontját adja. Az eredményét megnézheted például A kérésedre… című zenei oldalon. Ha látni akarod, bátran pörgess az aljára:
Azon oldalak esetében, amelyek a fenti JavaScript-kódot tartalmazzák, sajnálatos módon maga a Firefox is a hibás adatot mutatja az Oldal adatai (Page Info) ablakban. Ennek megtekintéséhez kattints A kérésedre… oldal bármelyik üres területén az egér jobb gombjával (az egyértelműség kedvéért ideiglenesen magyarra állítottam a böngészőmet):
Tíz év rengeteg idő – különösképpen a webfejlesztés területén. Ennyi idő alatt új technikák születnek, beváltak pedig elavulnak. Ez esetben is ilyesmi történhetett. Egy olyan – JavaScript-funkciókat kezelő-bővítő – könyvtár vált népszerűvé a nagyvilágban, melynek alkalmazása ugyan kissé bonyolultabb, de sokkal strukturáltabb, áttekinthetőbb, ám főként sokkal hatékonyabb a puszta forrásánál. Ez a jQuery. Segítségével közvetlenül a kliensoldalról (arról a felületről, amit most látsz) könnyedén futtatható egy szerveroldali szkript (Perl, PHP stb.), amely megszerzi, majd ide visszajuttatja a szervertől kért adatokat. Egy ilyen adat – jelen esetben az állomány utolsó mentésének időpontja – valós időben (azonnal, mondhatjuk, röptében) megjeleníthető az aktuális weboldalon.
<script> $.ajax({ type: "GET", url: "filename.php", timeout: 1000, success: function(date) { $("#last_modified").text(date); } }); </script>
last_modified
azonosítójú
rovatba illeszt. Ez már kétségkívül az utolsó módosítás dátuma.
Bár egyáltalán nem tartozik az Ajax tárgykörébe, de minthogy a műveletvégzésben a két szkript szorosan együttműködik (és maga a PHP-kód lényegi része igazán nyúlfarknyi), megmutatom, hátha ennek révén valakinek némi ötlete támad. Íme a PHP-állomány érdemi tartalma:
<?php echo date("Y. m. d.", filemtime("file.html")); ?>
Fogalmam sincs, hogy mióta létezik és mi lehet a probléma tényleges oka. A sötétben tapogatózóm. Próbáltam kutakodni, mert semmiképpen sem szeretném komplett felborítani az eddigi rendet; nem akarom egy jóval bonyolultabb módszerrel leváltani a járt, bevált utat. A Google rengeteg találatot ad, de nem sikerült érdemleges választ kapnom, bár a Mozilla fejlesztőcsapata által közzétett táblázat szerint egyik böngészőben sem lehet gond.
Természetesen a W3C is foglalkozik a kérdéssel – például a 14 Header
Field Definitions oldalon
a 14.29 Last-Modified
alcím alatt. Tény, hogyha az utoljára 2012-ben
módosított Ajax-metódusok weboldalamat online nézem, a Last Modified
mező értéke null
, míg a saját gépemen futó Apache szerver
korrekt adattal szolgál: ugyanaz a JavaScript-algoritmus a kimentés tényleges
időpontját adja: