url - window.location.href vs window.location.replace vs window.location.assign i JavaScript
Hva er forskjellen mellom
window.location.href="http://example.com";window.location.replace("http://example.com");window.location.assign("http://example.com");
Jeg har lest i mange forum at window.location.assign() bare erstatter den nåværende økt-historikken og derfor vil ikke tilbake-knappen i nettleseren fungere. Imidlertid klarer jeg ikke å reprodusere dette.
function fnSetVariable() {
//window.location.href = "http://example.com";
window.location.replace("http://example.com");
//window.location.assign("http://example.com");
}
<a onmouseover="fnSetVariable();"
href="PageCachingByParam.aspx?id=12" >
CLICK
</a>
Svar #1
Disse gjør det samme:
window.location.assign(url);
window.location = url;
window.location.href = url;
De navigerer enkelt til den nye URL-en. replace-metoden, derimot, navigerer til URL-en uten å legge til en ny oppføring i historikken.
Så, det du har lest i de mange forumene er ikke korrekt. assign-metoden legger til en ny post i historikken.
Referanse: https://developer.mozilla.org/en-US/docs/Web/API/Window/location
Svar #2
Avsnittet om at man ikke kan bruke Tilbake-knappen er en vanlig misforståelse. window.location.replace(URL) fjerner den øverste éne posten fra historikklisten for siden, ved å overskrive den med den nye posten, så brukeren kan ikke enkelt gå tilbake til akkurat DENNE nettsiden. Funksjonen sletter IKKE hele sidens historikkliste, og den gjør heller ikke Tilbake-knappen fullstendig ufunksjonell.
(Ingen funksjon eller kombinasjon av parametere som jeg kjenner til kan endre eller overskrive historikkoppføringer som du ikke eier helt sikkert - nettlesere implementerer vanligvis denne sikkerhetsbegrensningen ved ganske enkelt å ikke engang definere noen operasjon som kan påvirke andre oppføringer enn øverste i sidehistorikken. Jeg grøsser ved tanken på hvilke skumle ting skadelig programvare kunne gjort hvis en slik funksjon eksisterte.)
Hvis du virkelig vil gjøre Tilbake-knappen ufunksjonell (sannsynligvis ikke «brukervennlig»: tenk deg om igjen om det er virkelig det du vil gjøre), «åpne» et helt nytt vindu. (Du kan også «åpne» en popup som ikke engang har en «Tilbake»-knapp ... men popups er ikke veldig populære i disse dager :-) Hvis du vil at siden din alltid skal vises uansett hva brukeren gjør (igjen, «brukervennligheten» er tvilsom), sett opp en window.onunload-handler som bare laster siden din helt på nytt fra begynnelsen hver gang.
