Kuinka saada edellinen URL JavaScriptissä?
Onko olemassa mitään tapaa saada edellinen URL JavaScriptissä? Jotain tällaista:
alert("previous url is: " + window.history.previous.href);
Onko olemassa jotain sellaista? Vai pitäisikö minun vain tallentaa se evästeeseen? Minun täytyy vain tietää, jotta voin tehdä siirtymiä edellisestä URL-osoitteesta nykyiseen URL-osoitteeseen ilman ankkureita ja kaikkea sitä.
Vastaus #1
document.referrer
monissa tapauksissa saat URL-osoitteen viimeiseltä sivulta, jonka käyttäjä vieraili, jos he pääsivät nykyiselle sivulle klikkaamalla linkkiä (verrattuna siihen, että kirjoittivat suoraan osoiteriville, tai uskoakseni joissain tapauksissa lähettämällä lomakkeen?). Määritelty DOM-taso 2:lla. Lisää tästä.
window.history mahdollistaa navigoinnin, mutta ei pääsyä istunnon URL-osoitteisiin turvallisuus- ja yksityisyys syistä. Jos yksityiskohtaisempi URL-historia olisi saatavilla, jokainen sivusto, jota käyt, voisi nähdä kaikki muut sivustot, joissa olet vieraillut.
Jos käsittelet tilaa, joka liikkuu oman sivustosi sisällä, se on mahdollisesti vähemmän haavoittuva ja varmasti hyödyllisempi käyttää yhtä normaalista istunnonhallintatekniikasta: evästetietoja, URL-parametreja tai palvelinpuolen istuntotietoja.
Vastaus #2
Jos haluat mennä edelliselle sivulle ilman, että tiedät URL-osoitetta, voit käyttää uutta History APIa.
history.back(); //Go to the previous page
history.forward(); //Go to the next page in the stack
history.go(index); //Where index could be 1, -1, 56, etc.
Mutta et voi muokata selaimen historian pinoa, joka ei tue HTML5 History API:a
Lisätietoja saat dokumentista
Vastaus #3
Jos kirjoitat web-sovellusta tai yksisivuista sovellusta (SPA), jossa reititys tapahtuu sovelluksessa/selaimessa sen sijaan, että tehtäisiin matka palvelimelle, voit tehdä seuraavaa:
window.history.pushState({ prevUrl: window.location.href }, null, "/new/path/in/your/app")
Sitten uudessa reitissäsi voit tehdä seuraavaa hakeaksesi edellisen URL-osoitteen:
window.history.state.prevUrl // your previous url
Vastaus #4
document.referrer ei ole sama kuin todellinen URL kaikissa tilanteissa.
Minulla on sovellus, jossa minun täytyy luoda kehyspohja kahdella kehyksellä. Yksi kehys on tunnettu, toinen on sivu, josta linkitän. Näyttäisi siltä, että document.referrer olisi ihanteellinen, koska sinun ei tarvitsisi siirtää varsinaista tiedostonimeä kehyspohjadokumentille.
Kuitenkin, jos myöhemmin vaihdat alaosan kehyssivua ja sitten käytät history.back(), se ei lataa alkuperäistä sivua alaosakehykseen, vaan se lataa uudelleen document.referrer-arvon, ja seurauksena kehykset ovat poissa ja olet takaisin alkuperäisessä aloitusikkunassa.
Kesti hetken ymmärtää tämä. Joten historiataulukossa document.referrer ei ole vain URL-osoite, vaan ilmeisesti myös viittaavan ikkunan määritelmä. Ainakin näin pystyn sen tällä hetkellä parhaiten ymmärtämään.
Vastaus #5
<script type="text/javascript">
document.write(document.referrer);
</script>
document.referrer palvelee tarkoitustasi, mutta se ei toimi Internet Explorerin versioissa ennen IE9:ää.
Se toimii myös muiden suosittujen selainten kanssa, kuten Chromen, Mozillan, Operan, Safarin jne.
