Ajax hash módosítás és diszkrét javascript ütik egymást
Üdv.
Sajnos máshol nem kaptam rá választ, szóval gondoltam felteszem itt is a kérdést.
Az oldalon, amit csinálok xmlhttp-vel oldom meg a navigálást, viszont szeretnék legalább néhány funkciót kívülről is elérhetővé tenni sima url-el.
Ugye a javascriptes navigáció úgy zajlik, hogy figyelem a hash rész módosulását, és ha éppen nem én módosítottam a hash-t (akkor nyilván a felhasználó lépked a history-ben), akkor automatikusan ugrok a hashnek megfelelő oldalra, amúgy meg a hash módosításával párhuzamosan töltöm be, amire szükség van.
A kereshetőség szempontjából nyilván szükség van a hagyományos navigációra is, mert a google botok nehezen térképezik fel az oldalt, meg amúgy is jó, ha diszkrét js-el megy a dolog.
A problémám nagyon szimpla.
Ha mondjuk rákeresek az oldalon egy cikkre googleben, akkor az a következő linket fogja adni:
bla.com/articles/a-cikk
Erre ha rákattintok, akkor nyilván lejön az oldal, a böngésző címsorában meg nyilván az url jelenik meg.
Ez eddig okés, viszont innentől ha az usernek van javascriptje, akkor a navigáció js-el megy, és a hash módosul, maga az oldal viszont nem töltődik újra.
Ilyenkor mondjuk a következő cikkre kattintva így módosul a böngésző címsora:
bla.com/articles/a-cikk#articles/kovetkezo-cikk
Helyette pedig azt szeretném, ha a címsorban ez lenne:
bla.com#articles/kovetkezo-cikk
Hogyan lehet megoldani ezt?
Az oldal újratöltésével - amennyiben van javascript - az a bajom, hogy gyakorlatilag ugyanazt a tartalmat szedi le az user 2x...
Szóval a következő cikkre váltásnál kéne újratölteni az egészet, és felülírni az url-t, vagy van erre valami jobb megoldás?
■ Sajnos máshol nem kaptam rá választ, szóval gondoltam felteszem itt is a kérdést.
Az oldalon, amit csinálok xmlhttp-vel oldom meg a navigálást, viszont szeretnék legalább néhány funkciót kívülről is elérhetővé tenni sima url-el.
Ugye a javascriptes navigáció úgy zajlik, hogy figyelem a hash rész módosulását, és ha éppen nem én módosítottam a hash-t (akkor nyilván a felhasználó lépked a history-ben), akkor automatikusan ugrok a hashnek megfelelő oldalra, amúgy meg a hash módosításával párhuzamosan töltöm be, amire szükség van.
A kereshetőség szempontjából nyilván szükség van a hagyományos navigációra is, mert a google botok nehezen térképezik fel az oldalt, meg amúgy is jó, ha diszkrét js-el megy a dolog.
A problémám nagyon szimpla.
Ha mondjuk rákeresek az oldalon egy cikkre googleben, akkor az a következő linket fogja adni:
bla.com/articles/a-cikk
Erre ha rákattintok, akkor nyilván lejön az oldal, a böngésző címsorában meg nyilván az url jelenik meg.
Ez eddig okés, viszont innentől ha az usernek van javascriptje, akkor a navigáció js-el megy, és a hash módosul, maga az oldal viszont nem töltődik újra.
Ilyenkor mondjuk a következő cikkre kattintva így módosul a böngésző címsora:
bla.com/articles/a-cikk#articles/kovetkezo-cikk
Helyette pedig azt szeretném, ha a címsorban ez lenne:
bla.com#articles/kovetkezo-cikk
Hogyan lehet megoldani ezt?
Az oldal újratöltésével - amennyiben van javascript - az a bajom, hogy gyakorlatilag ugyanazt a tartalmat szedi le az user 2x...
Szóval a következő cikkre váltásnál kéne újratölteni az egészet, és felülírni az url-t, vagy van erre valami jobb megoldás?
Nem jó megközelítés
http://example.com/articles/a-cikk#articles/kovetkezo-cikk
a Google szemszögéből egyenlő ahttp://example.com/articles/a-cikk
-kel, ahogy ahttp://example.com/#articles/kovetkezo-cikk
megegyezik ahttp://example.com/
-mal mivel a Google a hashtaget egyszerűen lenyeli, és nem veszi figyelembe.Amit csinálnod kellene, hogy a linkeket mind
http://example.com/articles/a-cikk
,http://example.com/articles/kovetkezo-cikk
formában adod meg, és JavaScripttel cseréled le a #tag-es megfelelőre, és persze mindkettő változatnak működnie kellene.Teszteld az oldalad kikapcsolt JavaScript mellett, és meglátod a Google, és a potencionális felhasználók egy része mennyire tudná használni.
Pont ezt írtam
Igen, pont azt írtam, hogy a google-ből nem lehet használni a hash-es tagot, csak a régi stílusút, és az a bajom, hogy hogyan váltsak a régi stílusúról hash-re, amikor odanavigál az user az oldalra. A hash tag cseréje meg a historyban lépkedés javascripttel már megoldott.
Pl ha lenne szerver oldali js detectem, akkor még az oldal betöltődése előtt tudnám módosítani az url-t, és minden rendben lenne, mert a js-el rendelkezők http://example.com/ -ot kapnának, amit a javascript kiegészítene a hash tag-gel, a js-el nem rendelkezők meg http://example.com/articles/a-cikk -et.
Régebbi írás de talán segít:
Sajnos nem
Sajnos nem segített. A history kezelését már megvalósítottam.
Most azon gondolkodok, hogy betöltődéskor egy script fogja csekkolni, hogy az url-ben csak tisztán a domain van-e.
Ha csak a domain van, akkor az url-eket úgy írja át, hogy xmlhttp-vel szedjék le a tartalmat, ha nem csak a domain van, akkor pedig egy hash-es címre módosítják, és engedik továbbmenni az elnavigálást. Ha meg nincs javascript, akkor meg az url-ek maradnak olyanok, amilyenek...
Nyilván nem minden funkcióhoz kell ez a hash-es dolog, csak a tartalommal kapcsolatosakhoz. Szóval mondjuk egy jelszó változtatáshoz vagy a kedvencek kezeléséhez, etc biztosan nem lesz szükég rá, de egy cikk lekéréséhez, vagy egy szavazás megtekintéséhez már kell.