Načrtovanje in razvoj spletnih aplikacij

Objekti brskalnika: Location

Objekt location vsebuje podatke o trenutnem spletnem naslovu in omogoča tudi navigacijo na drug naslov. Ker je location lastnost objekta window, ga lahko v brskalniku običajno uporabljamo tudi brez predpone window.. Pri sodobni razlagi je pomembno poudariti, da nekatere lastnosti zgolj vračajo dele naslova, druge pa lahko ob nastavitvi spremenijo trenutno lokacijo dokumenta.

Pomni: Lastnost window.location vrne objekt Location. Ta objekt ne služi le branju podatkov, ampak lahko z njegovimi metodami ali z nastavitvijo določenih lastnosti sprožimo tudi navigacijo.

Osnovna pravila

  • Objekt location opisuje trenutni naslov dokumenta.
  • Lastnost href vrne celoten naslov URL.
  • Lastnosti hostname, protocol, pathname, search in hash vrnejo posamezne dele naslova.
  • Metoda assign() naloži nov dokument in praviloma ohrani možnost vrnitve nazaj.
  • Metoda replace() zamenja trenutni dokument brez ohranitve trenutnega vnosa v zgodovini seje.

Lastnosti objekta location

Lastnost Opis
location.href vrne celoten naslov URL
location.host vrne gostitelja in po potrebi tudi vrata
location.hostname vrne ime gostitelja brez številke vrat
location.protocol vrne protokol oziroma shemo skupaj z dvopičjem
location.pathname vrne pot dela naslova brez poizvedbe in fragmenta
location.port vrne številko vrat kot niz ali prazen niz
location.hash vrne fragment skupaj z znakom # ali prazen niz
location.search vrne poizvedbeni niz skupaj z znakom ? ali prazen niz
location.origin vrne izvor, to je protokol, gostitelja in po potrebi vrata

Pozor: Lastnost location.pathname ne vrne poizvedbe in ne vrne fragmenta. Za ta dela naslova uporabljamo lastnosti search in hash.

Celoten naslov in gostitelj

Lastnost href vrne celoten naslov strani, medtem ko lastnosti host in hostname vrneta gostiteljski del naslova. Pri host so lahko vključena tudi vrata, pri hostname pa ne.

<p id="primer"></p>
<script>
document.getElementById("primer").innerHTML =
   "Poln omrežni naslov je: " + location.href +
   "<br>Gostitelj je: " + location.host +
   "<br>Ime gostitelja je: " + location.hostname;
</script>

Protokol, pot, parametri in fragment

Lastnost protocol vrne shemo naslova, pathname vrne pot, search vrne poizvedbeni del, hash pa fragment. Lastnost origin vrne izvor dokumenta.

<p id="primer1"></p>
<script>
document.getElementById("primer1").innerHTML =
   "Protokol je: " + location.protocol +
   "<br>Pot je: " + location.pathname +
   "<br>Parametri so: " + location.search +
   "<br>Fragment je: " + location.hash +
   "<br>Izvor je: " + location.origin;
</script>

Metode objekta location

Metoda assign() naloži nov dokument. Metoda reload() ponovno naloži trenutni dokument. Metoda replace() naloži nov dokument, vendar brez ohranitve trenutnega vnosa v zgodovini seje.

Metoda Opis
location.assign() naloži nov dokument in praviloma ohrani možnost vrnitve nazaj
location.reload() ponovno naloži trenutni dokument
location.replace() zamenja trenutni dokument brez ohranitve trenutne strani v zgodovini seje

Primer uporabe metode assign():

<script>
function novDokument() {
   location.assign("https://developer.mozilla.org/");
}
</script>

<input type="button" value="Klikni me, da naložim novo stran!" onclick="novDokument()">

Pomni: Če želimo zamenjati trenutno stran tako, da se uporabnik praviloma ne bo mogel vrniti nanjo z gumbom Nazaj, uporabimo location.replace() in ne location.assign().

Priporočila

  • Pri razlagi jasno ločuj med lastnostmi za branje delov naslova in metodami za navigacijo.
  • Za celoten naslov uporabi href, za gostitelja host ali hostname, za pot pa pathname.
  • Za poizvedbene parametre uporabi search, za fragment pa hash.
  • Metodi assign() in replace() uporabljaj premišljeno, ker povzročita navigacijo na drug naslov.
  • Pri razlagi poudari, da je origin kombinacija protokola, gostitelja in po potrebi vrat.

Pogoste napake

  • Metoda assign() se zamenjuje z lastnostjo, čeprav gre za metodo objekta location.
  • Lastnost pathname se razume kot celoten naslov, čeprav vrne le pot brez poizvedbe in fragmenta.
  • Lastnosti host in hostname se obravnavata kot povsem enaki, čeprav lahko host vključuje tudi vrata.
  • Predpostavi se, da so vse informacije objekta location zgolj za branje, čeprav lahko nastavitev nekaterih lastnosti in uporaba metod povzroči navigacijo.
  • Metoda replace() se uporablja brez razumevanja, da trenutne strani praviloma ne ohrani v zgodovini seje.