Módosíthatja címsor URL AJAX App a jelenlegi állapotot tükrözi

szavazat
160

Írok egy AJAX alkalmazást, de a felhasználó mozgatja az alkalmazáson keresztül, szeretném az URL-t a címsorba, hogy frissítse hiánya ellenére az oldal újratöltése. Alapvetően szeretnék nekik, hogy képes legyen könyvjelző bármely pontján, és ezáltal visszatér a jelenlegi állapot.

Hogy vannak emberek kezelése fenntartása nyugalom AJAX alkalmazásokat?

A kérdést 04/08/2008 18:53
a forrás felhasználó
Más nyelveken...                            


8 válasz

szavazat
116

A módja ennek az, hogy manipulálják location.hash, ha AJAX frissítéseket eredményez állami változás, hogy azt szeretné, hogy egy diszkrét URL. Például, ha az oldal URL-címe:

http://example.com/

Ha egy kliens oldali funkció végre ezt a kódot:

// AJAX code to display the "foo" state goes here.

location.hash = 'foo';

Ezután az URL jelenik meg a böngésző lenne frissítve:

http://example.com/#foo

Ez lehetővé teszi a felhasználók számára, hogy a könyvjelzők közé a „foo” állam az oldalt, és használja a böngésző történelem navigálni államok között.

Ezzel a mechanizmussal működik, akkor majd kell kiszűri azokat a hash az URL-t a kliens oldali JavaScript segítségével hozzon létre és megjeleníti a megfelelő kiindulási állapotban a fragmentum azonosítók (rész után #) nem küldött a szerver.

Ben Alman a hashchange bővítmény az utóbbit a szél, ha a jQuery.

Válaszolt 04/08/2008 19:04
a forrás felhasználó

szavazat
18

Nézd meg oldalak, mint book.cakephp.org. Ez a webhely megváltoztatja az URL használata nélkül a hash és használja AJAX. Nem tudom, hogyan csinál pontosan, de én próbálom kitalálni. Ha valaki tudja, szóljon.

Szintén github.com amikor nézi a navigációt egy bizonyos projektet.

Válaszolt 13/02/2011 20:47
a forrás felhasználó

szavazat
17

Nem valószínű, az író azt akarja, hogy újra vagy átirányítani a látogatót, ha Ajax. De miért nem használja HTML5 a pushState/ replaceState?

Ön képes lesz arra, hogy módosítsa a címsorába, amennyit csak szeretne. Get természetes hatású URL-eket, AJAX.

A kód az én legújabb projektje: http://iesus.se/

Válaszolt 27/04/2011 09:09
a forrás felhasználó

szavazat
12

Ez hasonló ahhoz, amit Kevin. Akkor már a kliens állapotát, mint néhány javascript objektumot, és ha azt szeretné, hogy mentse az állam, akkor szerializálni a tárgy (a JSON és base64 kódolás). Akkor majd állítsa be a töredék a href hogy ezt a fonalat.

var encodedState = base64(json(state));
var newLocation = oldLocationWithoutFragment + "#" + encodedState;

document.location = newLocation; // adds new entry in browser history
document.location.replace(newLocation); // replaces current entry in browser history

Az első út kezeli az új állam, mint egy új helyen (így a hátsó gomb fogja vinni az előző helyen). Az utóbbi nem.

Válaszolt 04/08/2008 19:02
a forrás felhasználó

szavazat
3

Ha OP vagy mások még mindig keresi a módját, hogy nem módosítja a böngésző történetét, hogy az állami, a pushState és replaceState, ahogy azt Jézus, a „helyes” módja annak, hogy tegye meg most. Ez a fő előnye location.hash tűnik, hogy megteremti a tényleges URL-eket, nem csak hash. Ha a böngésző történelem hash-ekkel van mentve, majd felülvizsgálták a JavaScript le van tiltva, akkor az alkalmazás nem fog működni, mivel a hash nem küldi el a szerver. Azonban, ha pushState felhasználásra került, a teljes útvonalat fog küldeni a szerver, amit aztán építeni a megfelelő választ az útvonalakat. Láttam egy példát, ahol az azonos bajusz sablonokat használtak mind a szerver és a kliens oldalon. Ha az ügyfél már javascript, ő kap szellemes válaszokat elkerülésével oda a szerver, de az alkalmazás működne tökéletesen nélkül javascript. Így, az alkalmazás elegánsan bomlik hiányában a JavaScript.

Azt is gondolom, van némi keret ott, egy nevet, mint history.js. Támogató böngészők HTML5, akkor használja pushState, de ha a böngésző nem támogatja, hogy automatikusan esik vissza hash-ekkel.

Válaszolt 23/06/2011 10:20
a forrás felhasználó

szavazat
3

A window.location.hash módszer előnyös módon a dolgok. A magyarázat, hogyan kell csinálni, Ajax Patterns - különböző URL .

Yui egy végrehajtását ez a minta, mint egy modult, ami tartalmazza az IE specifikus megkerülések szerzés a vissza gombot dolgozik együtt újraírás a címet a hash. YUI Browser History Manager .

Egyéb keretek hasonló megvalósítások is. A lényeg az, ha azt szeretné, hogy a történelem dolgozni együtt újraírás a címet, a különböző böngészők más-más módon történő kezelése is. (Ez részletezi az első link a cikkben).

IE szüksége iframe alapú hack, ahol a Firefox fog kettős történelem ugyanazzal a módszerrel.

Válaszolt 31/03/2009 06:54
a forrás felhasználó

szavazat
3

SWFAddress működik a Flash és JavaScript projektek és lehetővé teszi, hogy hozzon létre, kedvencekhez URL-ek (a hash fenti módszer), valamint így vissza-gomb támogatást.

http://www.asual.com/swfaddress/

Válaszolt 01/09/2008 14:43
a forrás felhasználó

szavazat
2

Ellenőrizze, hogy a felhasználó az „in” az oldalon, ha rákattint az URL sáv, javascript azt mondja, hogy ki az oldalt. Ha megváltoztatja az url bar és nyomja meg az „Enter” a „#” jel belül, akkor bemegy az oldalt újra, anélkül, kattintson az oldalon kézzel egérkurzort, akkor a billentyűkkel esemény parancs (document.onkeypress) ebből JavaScript ellenőrizni tudja, ha ez be, és aktív a javascript átirányításra. Meg tudja nézni, ha a felhasználó a oldal window.onfocus és ellenőrizze, hogy ő ki window.onblur.

Igen, ez lehetséges.

;)

Válaszolt 14/10/2010 00:18
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more