javascript - Hvordan kan jeg endre den nåværende URL-en?


Jeg har følgende kode som endrer sidene fra JavaScript:

var newUrl = [some code to build up URL string];
window.location.replace(newUrl);

Men det endrer ikke topp-URL-en, så når noen klikker på tilbakeknappen, går det ikke tilbake til forrige side.

Hvordan kan jeg få JavaScript til å endre topp-URL-en også, slik at nettleserens tilbakeknapp fungerer.

Svar #1

document.location.href = newUrl;

https://developer.mozilla.org/en-US/docs/Web/API/document.location

Svar #2

Enkel tildeling til window.location eller window.location.href bør være greit:

window.location = newUrl;

Men din nye URL vil få nettleseren til å laste den nye siden, men det høres ut som om du ønsker å endre URL-en uten å forlate den nåværende siden. Du har to alternativer for dette:

  1. Bruk URL-hashen. For eksempel kan du gå fra example.com til example.com#foo uten å laste en ny side. Du kan enkelt sette window.location.hash for å gjøre dette enkelt. Deretter bør du lytte til HTML5-hashchange-hendelsen, som vil bli utløst når brukeren trykker på tilbakeknappen. Dette støttes ikke i eldre versjoner av IE, men sjekk ut jQuery BBQ, som gjør at dette fungerer i alle nettlesere.

  2. Du kan bruke HTML5 History for å endre banen uten å laste siden på nytt. Dette vil tillate deg å gå fra example.com/foo til example.com/bar. Å bruke dette er enkelt:

    window.history.pushState("example.com/foo");
    

    Når brukeren trykker på «tilbake», vil du motta vinduets popstate-hendelse, som du enkelt kan lytte til (jQuery):

    $(window).bind("popstate", function(e) { alert("location changed"); });
    

    Dessverre støttes dette bare i veldig moderne nettlesere, som Chrome, Safari og Firefox 4 beta.

Svar #3

Hvis du bare vil oppdatere den relative banen, kan du også gjøre

window.location.pathname = '/relative-link'
"http://domain.com" -> "http://domain.com/relative-link"

Svar #4

Hmm, jeg ville brukt

window.location = 'http://localhost/index.html#?options=go_here';

Jeg er ikke helt sikker på om det er det du mener.

Relaterte artikler