Frage

Ich habe eine schwere Anwendung Ajax, die eine URL wie

haben
http://example.com/myApp/#page=1

Wenn ein Benutzer manipuliert die Website, kann die Adressleiste etwas ändern wie

http://example.com/myApp/#page=5

, ohne die Seite neu zu laden.

Mein Problem ist die folgende Sequenz:

  1. Ein Benutzer Lesezeichen die erste URL.
  2. Die Benutzer manipuliert die Anwendung, so dass die zweite URL ist der aktuelle Stand.
  3. Der Benutzer klickt auf das Lesezeichen erstellt in Schritt 1.
  4. Die URL in der Adressleiste von http://example.com/myApp/#page= 5 http://example.com/myApp/#page=1 , aber ich weiß nicht, einen Weg der Veränderung geschah zu erkennen.

Wenn ich eine Änderung erkennen einige JavaScript auf sie wirken würde.

War es hilfreich?

Lösung

HTML5 bietet ein hashchange Ereignis, das Sie für die Meldung von URL-Hash-Änderungen ohne Polling für sie mit einem Timer.

registrieren kann

Es unterstützt es von allen gängigen Browsern (Firefox 3.6, IE8, Chrome, andere Webkit-basierten Browsern), aber ich würde immer noch sehr empfehlen, eine Bibliothek zu verwenden, die die Veranstaltung für Sie Griffe - dh durch einen Timer in Browsern nicht die HTML5 Veranstaltung unterstützen und ansonsten das Ereignis verwendet wird.

Für weitere Informationen über die Veranstaltung finden Sie unter https://developer.mozilla.org/ de / dom / window.onhashchange und http :. //msdn.microsoft.com/en-us/library/cc288209%28VS.85%29.aspx

Andere Tipps

überprüfen die aktuelle Adresse periodisch SetTimeout / Intervall verwendet:

 var oldLocation = location.href;
 setInterval(function() {
      if(location.href != oldLocation) {
           // do your action
           oldLocation = location.href
      }
  }, 1000); // check every second

Sie sollten den Standort Objekt erweitern, ein Ereignis zu belichten, dass Sie binden können.

ie:

window.location.prototype.changed = function(e){};

(function() //create a scope so 'location' is not global
{
    var location = window.location.href;
    setInterval(function()
    {
        if(location != window.location.href)
        {
            location = window.location.href;
            window.location.changed(location);
        }
    }, 1000);
})();

window.location.changed = function(e)
{
    console.log(e);//outputs http://newhref.com
    //this is fired when the window changes location
}

SWFAddress ist eine ausgezeichnete Bibliothek für diese Art von Dingen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top