2016-05-17 18 views
5

Hier ist ein einfaches Beispiel für pushState und popstate Veranstaltung:Wie kann ich die URL der vorherigen Seite erhalten, wenn das Popstate-Ereignis ausgelöst wird?

<button id="example_btn">Click me</button> 

<script> 
$("#example_btn").click(function(){ 
      history.pushState( 
       { 
        'url' : "example.htm" 
       }, null, "example.htm"); 
}); 
$(window).bind('popstate', function (event) { 
    if (event.originalEvent.state) { 
     console.log(event.originalEvent.state.url); 
    } 
}); 
</script> 

Wenn das popstate Ereignis auslöst, zeigt es die URL der aktuellen Seite.

Meine Frage ist:

Wie kann ich die URL der vorherigen Seite erhalten, wenn das popstate Ereignis in diesem Fall Auslösung?


P.S. Ich habe versucht document.referrer, aber es zeigte nichts.

Antwort

0

Bitte versuchen Sie, die vorherigeUrl in einer Variablen zu halten und zu hören.

<button id="example_btn">Click me</button> 

<script> 
var previousUrl = null; 
$("#example_btn").on('click', function(){ 
      previousUrl = location.href; 
      history.pushState( 
       { 
        'url' : "example.htm" 
       }, null, "example.htm"); 
}); 
window.onpopstate = function (event) { 
    console.log('Previous url was : ', previousUrl); 
}; 
</script> 
0

mit PopStateEvent. Ich verwende mit

window.history.pushState({} , {} , url); 

andere Möglichkeiten, die ich nicht sicher bin.

Unten habe ich es funktioniert getestet. Ich hoffe, hilfreich.

window.addEventListener('popstate', function(e){ 
    console.log(e.srcElement.location); 
    /* You get other location types( 'http://....' or '/index.html' */ 
    var previusUrl = e.srcElement.location.href; 
    console.log(previusUrl); 
    // with http://............ 
});