Wie kann ich eine Adressleiste ändern mit JavaScript erkennen?
-
20-09-2019 - |
Frage
Ich habe eine schwere Anwendung Ajax, die eine URL wie
habenhttp://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:
- Ein Benutzer Lesezeichen die erste URL.
- Die Benutzer manipuliert die Anwendung, so dass die zweite URL ist der aktuelle Stand.
- Der Benutzer klickt auf das Lesezeichen erstellt in Schritt 1.
- 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.
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 kannEs 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.