Τροποποίηση γραμμή διευθύνσεων URL σε AJAX App που ανταποκρίνονται στη σημερινή μέλος

ψήφοι
160

Γράφω μια εφαρμογή AJAX, αλλά καθώς ο χρήστης κινείται μέσα από το app, θα ήθελα τη διεύθυνση URL στη γραμμή διευθύνσεων για να ενημερώσετε παρά την έλλειψη της σελίδας επαναφορτίσεις. Βασικά, θα ήθελα για να είναι σε θέση να σελιδοδείκτη σε οποιοδήποτε σημείο και με αυτόν τον τρόπο να επιστρέψετε στην τρέχουσα κατάσταση.

Πώς είναι οι άνθρωποι που χειρίζονται τη διατήρηση ηρεμία στις AJAX εφαρμογές;

Δημοσιεύθηκε 04/08/2008 στις 18:53
πηγή χρήστη
Σε άλλες γλώσσες...                            


8 απαντήσεις

ψήφοι
116

Ο τρόπος για να γίνει αυτό είναι να χειραγωγήσουν location.hash, όταν ενημερώσεις AJAX οδηγήσει σε μια αλλαγή κατάστασης που θα θέλατε να έχουν μια διακριτική URL. Για παράδειγμα, αν η διεύθυνση URL της σελίδας σας είναι:

http://example.com/

Αν μια πλευρά του πελάτη λειτουργία εκτελείται αυτόν τον κωδικό:

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

location.hash = 'foo';

Στη συνέχεια, η διεύθυνση URL που εμφανίζεται στο πρόγραμμα περιήγησης θα πρέπει να ενημερώνεται για:

http://example.com/#foo

Αυτό επιτρέπει στους χρήστες να σελιδοδείκτη το «foo» κατάσταση της σελίδας, και να χρησιμοποιήσετε το ιστορικό του προγράμματος περιήγησης για να περιηγηθείτε μεταξύ των κρατών.

Με αυτό το μηχανισμό στη θέση του, θα πρέπει στη συνέχεια να αναλύσει το τμήμα hash του URL στην πλευρά του πελάτη χρησιμοποιώντας την Javascript για να δημιουργήσει και να εμφανίσει την κατάλληλη αρχική κατάσταση, όπως αναγνωριστικά τμήμα (το τμήμα μετά το #) δεν αποστέλλονται με το υπηρέτης.

Plugin hashchange Ben Alman του κάνει το τελευταίο παιχνιδάκι αν χρησιμοποιείτε jQuery.

Απαντήθηκε 04/08/2008 στις 19:04
πηγή χρήστη

ψήφοι
18

Κοιτάξτε ιστοσελίδες όπως το book.cakephp.org. Αυτός ο δικτυακός τόπος αλλάζει το URL χωρίς τη χρήση του κατακερματισμού και τη χρήση AJAX. Δεν είμαι σίγουρος πώς το κάνει ακριβώς, αλλά έχω προσπαθήσει να το καταλάβω. Αν κάποιος ξέρει, επιτρέψτε μου να ξέρω.

Επίσης github.com όταν κοιτάζει μια πλοήγηση μέσα σε ένα συγκεκριμένο έργο.

Απαντήθηκε 13/02/2011 στις 20:47
πηγή χρήστη

ψήφοι
17

Είναι απίθανο ο συγγραφέας θέλει να φορτώσετε εκ νέου ή να ανακατευθύνει τις εντυπώσεις του, κατά τη χρήση Ajax. Αλλά γιατί να μην χρησιμοποιούν HTML5 του pushState/ replaceState;

Θα είστε σε θέση να τροποποιήσει γραμμή διεύθυνσης όσο θέλετε. Αποκτήστε φυσική διευθύνσεις URL που αναζητούν, με AJAX.

Ελέγξτε τον κωδικό για το τελευταίο έργο μου: http://iesus.se/

Απαντήθηκε 27/04/2011 στις 09:09
πηγή χρήστη

ψήφοι
12

Αυτό είναι παρόμοιο με αυτό που είπε ο Kevin. Μπορείτε να έχετε κατάσταση του πελάτη σας κάποιο αντικείμενο javascript, και όταν θέλετε να αποθηκεύσετε το κράτος, που σε συνέχειες το αντικείμενο (χρησιμοποιώντας JSON και base64 κωδικοποίηση). Στη συνέχεια μπορείτε να ρυθμίσετε το τμήμα της href σε αυτό το κορδόνι.

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

Ο πρώτος τρόπος θα αντιμετωπίσει τη νέα κατάσταση ως μια νέα θέση (έτσι το πίσω κουμπί θα τους μεταφέρει στην προηγούμενη θέση). Ο τελευταίος δεν το κάνει.

Απαντήθηκε 04/08/2008 στις 19:02
πηγή χρήστη

ψήφοι
3

Αν ΕΠ ή άλλοι εξακολουθούν να ψάχνουν για έναν τρόπο για να το κάνουμε τροποποίηση του ιστορικού του προγράμματος περιήγησης για να ενεργοποιήσετε κατάσταση, χρησιμοποιώντας pushState και replaceState, όπως προτείνεται από Iesus, είναι το «σωστό» τρόπο για να το κάνουμε τώρα. Είναι κύριο πλεονέκτημα έναντι location.hash φαίνεται να είναι ότι δημιουργεί πραγματικές διευθύνσεις URL, όχι μόνο hashes. Αν ιστορικό περιήγησης χρησιμοποιώντας hashes αποθηκεύεται, και στη συνέχεια να επανεξεταστεί με απενεργοποιημένη τη javascript, η εφαρμογή δεν θα λειτουργήσει, καθώς οι hashes δεν αποστέλλονται στο διακομιστή. Ωστόσο, αν έχει χρησιμοποιηθεί pushState, ολόκληρη η διαδρομή θα σταλεί στον server, το οποίο μπορείτε να δημιουργήσετε για να ανταποκριθεί κατάλληλα στις διαδρομές. Είδα ένα παράδειγμα όπου η ίδια πρότυπα μουστάκι χρησιμοποιήθηκαν τόσο στο διακομιστή όσο και στην πλευρά του πελάτη. Αν ο πελάτης έχει ενεργοποιημένη javascript, θα πάρει ζωηρός απαντήσεις, αποφεύγοντας το λεωφορείο στο διακομιστή, αλλά η εφαρμογή θα μπορούσε να λειτουργήσει απολύτως εντάξει χωρίς την javascript. Έτσι, η εφαρμογή μπορεί να με χάρη υποβαθμίσει απουσία javascript.

Επίσης, πιστεύω ότι υπάρχει κάποια πλαίσιο εκεί έξω, με ένα όνομα όπως history.js. Για τα προγράμματα περιήγησης που υποστηρίζουν HTML5, που χρησιμοποιεί pushState, αλλά αν το πρόγραμμα περιήγησης δεν υποστηρίζει ότι, πέφτει αυτόματα πίσω στην χρήση hashes.

Απαντήθηκε 23/06/2011 στις 10:20
πηγή χρήστη

ψήφοι
3

Η window.location.hash μέθοδος είναι ο προτιμώμενος τρόπος αντιμετώπισης των πραγμάτων. Για μια εξήγηση για το πώς να το κάνουμε, μοτίβα Άγιαξ - Μοναδικές διευθύνσεις URL .

YUI έχει εφαρμογή αυτού του προτύπου ως μια ενότητα, η οποία περιλαμβάνει IE εναλλακτικοί συγκεκριμένη εργασία για να πάρει το πίσω κουμπί που εργάζονται μαζί με επανεγγραφή τη διεύθυνση χρησιμοποιώντας το hash. YUI Browser Ιστορικό Προπονητή .

Άλλες πλαίσια έχουν παρόμοιες εφαρμογές, καθώς και. Το σημαντικό σημείο είναι, αν θέλετε η ιστορία να εργαστούν μαζί με την επανεγγραφή τη διεύθυνση, τα διαφορετικά προγράμματα περιήγησης χρειάζονται διαφορετικούς τρόπους χειρισμού του. (Αυτό είναι λεπτομερώς στο πρώτο άρθρο σύνδεσμο.)

IE χρειάζεται μια βάση hack iframe, όπου ο Firefox θα παράγει διπλή ιστορία χρησιμοποιώντας την ίδια μέθοδο.

Απαντήθηκε 31/03/2009 στις 06:54
πηγή χρήστη

ψήφοι
3

SWFAddress λειτουργεί σε Flash και Javascript έργα και σας επιτρέπει να δημιουργήσετε bookmarkable διευθύνσεις URL (χρησιμοποιώντας τη μέθοδο κατακερματισμού που αναφέρθηκαν παραπάνω), καθώς και σας δίνει την υποστήριξη back-κουμπί.

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

Απαντήθηκε 01/09/2008 στις 14:43
πηγή χρήστη

ψήφοι
2

Ελέγξτε αν ο χρήστης είναι «in» της σελίδας, όταν κάνετε κλικ στη γραμμή url, javascript λέει ότι είναι εκτός της σελίδας. Εάν αλλάξετε τη γραμμή url και πατήστε το πλήκτρο «ENTER» με το σύμβολο «#» μέσα σε αυτό, στη συνέχεια, πηγαίνετε στη σελίδα και πάλι, χωρίς κάντε κλικ στη σελίδα με το χέρι με το δείκτη του ποντικιού, τότε μια εντολή περίπτωση keyboad (document.onkeypress) από την javascript θα να είναι σε θέση να ελέγξει εάν έχει εισέλθει και ενεργό το javascript για ανακατεύθυνση. Μπορείτε να ελέγξετε αν ο χρήστης βρίσκεται στην σελίδα με window.onfocus και ελέγξτε αν είναι έξω με window.onblur.

Ναι, αυτό είναι δυνατό.

?)

Απαντήθηκε 14/10/2010 στις 00:18
πηγή χρήστη

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