FAQ |
Kalender |
2009-03-09, 17:48 | #1 | |||
|
||||
Medlem
|
Tja dudes!
Jag skall bygga en sida som helt använder såna här länkar: Kod:
<a href="#/page.php?id=1234">Min sida</a> Tex: Säg att jag klickar mig in på #page.php?id=1234 ifrån #contact.php och sedan klickat på bakåt-knappen? Finns det något event som typ: Kod:
<script>window.onChangeIDurl = function() { /*byt sida*/ }</script> |
|||
Svara med citat |
2009-03-09, 21:19 | #2 | ||
|
|||
Klarade millennium-buggen
|
först och främst skall du väl se till att din sajt fungerar utan javascript så ha "vanliga" länkar också sedan använder du javascript för att avaktivera länkarna (return false; på eventet)
Kolla lite hur jag testat mig runt på allstars.se/ajax.asp och jämför med huvudsajten allstars.se. Jag har använt mig av jQuery till största delen. |
||
Svara med citat |
2009-03-09, 21:26 | #3 | |||
|
||||
Mycket flitig postare
|
Jag förstår inte riktigt hur du tänkt dig det men det vanliga är att man gör:
Kod:
<a href="page.php?id=1234" onclick="openPage(1234)">Min sida</a> För att få bokmärken och framochtillbaka-navigering att fungera använder du location.hash |
|||
Svara med citat |
2009-03-09, 21:30 | #4 | ||
|
|||
Administratör
|
Precis som allstars säger tycker jag du ska utgå från vanliga länkar till hela sidorna och sedan t ex lägga på en get-variabel som ger dig samma sida utan det du behåller om du ska hämta den via javascript.
Sen brukar man såvitt jag vet normalt sett lägga event handlers på länkarna och inte försöka lägga de ett steg efter klicket på länken. T ex något i stil med (otestad, med jquery och ungefär ditt exempel): Citat:
__________________
eldefors.com - Personlig (teknik)-blogg |
||
Svara med citat |
2009-03-10, 15:58 | #5 | |||
|
||||
Medlem
|
Ingen som använder facebook alltså?
Enda lösningen på mitt problem är om man har en JS-loop som ständigt kollar om # har förändrats men min fråga var. Finns det något event eller onNått som gör detta? tex: 1. Nu är jag på #sida=1 2. Nu klickar jag på bakåt-knappen och kommer till #minsida 3. Något i stil med window.onChangeUrl = function() {/*byt till #minsida */ } körs Som jag sa kan man ju ha en loop som kollar varje sek eller något men det är ganska opraktiskt. |
|||
Svara med citat |
2009-03-10, 16:51 | #6 | ||
|
|||
Medlem
|
Du behöver väl inte ligga och polla om URL hashen förändras.
I mina ögon verkar det räcka med att: 1. Ladda sidans innehåll första gången den hämtas (säg att någon går in på www.sidan.se/index.html#en-annan-sida) 2. Lyssna på alla onClick events för länkar och uppdatera sidans innehåll samt URL hashen där efter. Det finns ett helt gäng färdiga script ute på nätet för att göra detta, till exempel detta: http://maxblog.me/ajaxify/ |
||
Svara med citat |
2009-03-10, 23:44 | #7 | |||
|
||||
Mycket flitig postare
|
Citat:
Citat:
1. Det känns ganska mycket som du har en strukturmiss i din kod. Förändringen av url:en måste ju uppstå någonstans, t.ex. genom ett klick på någonting och då är det en onclick där (eller ett onclick på hela dokumentet som bubblar om du så vill) som bör ta hand om händelsen. Jag kan inte tänka mig att du försöker kolla om användaren faktisk skriver in någonting i adressfältet (dvs. onUrlChange) och för detta finns det av naturliga skäl ingen event. 2. Om du menar att facebook löst detta på ett bra sätt så är väl bästa lösningen att titta vidare där. 3. Din applikation bör väl kunna fungera även utan javaskript (jag ser inte hur det kan fungera med den metoden du beskriver). Eller vill du undvika detta? 4. Du använder en metod som avviker från vad andra föreslagit här eller det som brukar vara det vedertagna sättet att lösa dessa problem - är du säker på att du är inne på rätt väg (att köra ett evigt loopande bara för att kontroller om något förändrats känns lite föråldrat eller underligt nuförtiden). |
|||
Svara med citat |
2009-03-11, 08:47 | #8 | ||
|
|||
Klarade millennium-buggen
|
du skall alltså inte ha # i länken initiellt utan med js lägga till detta för att göra funktionen unobtrusive.
säg att du har en meny (till att börja med) som en lista Kod:
$().ready(function(){ // för att lägga till ankarlänk till menyn $("#nav li a").foreach(function(){ var href = $(this).attr("href"); $(this).attr("href","#"+href) }); // För att ladda om innehållet från länkad sida $("#nav li a").click(function(){ var href = $(this).attr("href"); //Hämtar innehållet från sida och endast avsnittet i #content $("#content").load(href+" #content>*",{var1:"variabel_om_du_vill"},onComplete); function onComplete(){ //Om något skall utföras efter det att sidan hämtats } }); }): |
||
Svara med citat |
Svara |
|
|