ugrás a tartalomhoz

Ajax hash módosítás és diszkrét javascript ütik egymást

inf · 2009. Jún. 2. (K), 03.42
Ü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?
 
1

Nem jó megközelítés

Poetro · 2009. Jún. 2. (K), 09.10
Ugyanis a http://example.com/articles/a-cikk#articles/kovetkezo-cikk a Google szemszögéből egyenlő a http://example.com/articles/a-cikk-kel, ahogy a http://example.com/#articles/kovetkezo-cikk megegyezik a http://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.
3

Pont ezt írtam

inf · 2009. Jún. 2. (K), 16.10
Szia!

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.
2

Régebbi írás de talán segít:

rrd · 2009. Jún. 2. (K), 09.15
Régebbi írás de talán segít: http://webmania.cc/konyvjelzozheto-ajax-alkalmazasok/
4

Sajnos nem

inf · 2009. Jún. 2. (K), 16.20
Szia!

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.