Till Startsidan
JavaScript.nu / JavaScript-kurs / Location, parent.location och top.location

LÄR DIG SPRÅKET JAVASCRIPT
Location, parent.location och top.location


Det du nu ska lära dig är att du vet på vilken sida du är på (?).
Nja, jag kan lova att det inte är så korkat som det låter, för det rör sig om JavaScript...

Har jag skrivit detta på måfå?
Nej, det är så att ett JavaScript visar all text ovan, så om du nu skulle ladda ner denna sida och titta på den från din hårddisk så skulle du se ett helt annat resultat (måste bara påminna att om du har skrivit ut din adress med ett frågetecken och lite text (t.ex. hemsida.shtml?Hejsan hej) så skrivs även frågetecknet och texten efter ut).
För att få det som finns ovan skriver du:

<SCRIPT LANGUAGE="JavaScript">
<!--

document.write("Ok, just nu är du på denna sida:<BR>");
document.write("" + location + "<P>");

document.write("Om du har frames så ligger denna sida som du nu läser i denna framesida:<BR>");
document.write("" + parent.location + "<P>");

document.write("Om du har många framesidor i andra framesidor så kanske det jag skrivit där ovan inte är det som du ser i adressfältet, hur som helst ser du detta i adressfältet:<BR>");
document.write("" + top.location + "<P>");

//-->
</SCRIPT>
Egentligen finns inget nytt i detta script, det enda som är nytt så att säga är ju att jag skriver ut några värden (det gör man ju genom att skriva " + det_varde_som_ska_skrivas_ut + "). Värdena som jag skrivit ut, är till skillnad mot de värden du lärt dig, redan deklarerade, alltså att man inte behöver ge dem ett värde.

Vad kan nu dessa script vara bra för?
För att en besökare ska se vart han är?
Nej, långt ifrån rätt, du kan hålla på att använda lite IFar så att du får fin, fina script. :)

Detta är ett roligt och väldigt effektivt script som du kan använda, det skriver du såhär:

<SCRIPT LANGUAGE="JavaScript">
<!--
if (top.location != location)
{
top.location.href = location.href
}
//-->
</SCRIPT>
Vad gör då detta script?
Jo, det är så att först tar webbläsaren reda på om top.location (det du ser i statusraden) har samma värde (adress) som location (den sida som scriptet finns på). Om värdena inte (det står ju inte ==, utan !=, vilket betyder att de inte är likadana) är likadana så startar scriptet på nästa rad, alltså att top.location.href (värdet i adressfältet) ska ändras till det värde som location.href (sidan med scriptet) har.

Detta är ju utmärkt då du har en sida med frames, men inte vill att folk som länkar till dig ska ha dig i sin frame, utan ha din frame i helskärm.

Bra att veta:

På tal om == och !=...
Om man skriver ett "är lika med"-tecken (=) betyder det att de (värdena) SKA bli lika med varandra (det som står först får det som står senares värde). Detta används inte inom en "if".
Man behöver inte bara ha == och !=, man kan även ha dessa saker (dessa fungerar endast om man har talsträngar, dvs. en sträng som bara består av tal (=matematiska siffror)):
a<=b   Uttrycket händer om b är lika stort som eller större än a
a>=b   Uttrycket händer om b är lika stort som eller mindre än a
a<b    Uttrycket händer om b är större än a
a>b    Uttrycket händer om b är mindre än a
(Uttrycket = det mellan "{" och "}")

Du kan också använda dessa funktioner i andra bra syften.
Ett exempel är att öppna en sida som finns i en frame i hela fönstret eller i en annan frame, men för det måste du först lära dig att få värdet på ett speciellt fönster (en sida i en framesida alltså).
För att få värdet på sidan som finns i en frame som heter kalleanka skriver du:
parent.kalleanka.location

OBS: Observera att om du har frames i frames (alltså en framesida i en annan) så måste du tänka på att i vissa fall byta parent mot top. Nu frågar du vad sjutton i vissa fall betyder...
Det är nämligen såhär:
Ligger sidan med scriptet (där man skriver ut scriptet) i en av framesidans ramar och man vill få ut värdet (adressen) på en annan sida som ligger i samma ramverk så använder man parent. Vill man däremot få ut värdet (adressen) på en sida som ligger i ett ramverk som har t.ex. 2 sidor i sig, ett är den ram som vi vill få värdet på och en är den sida (även denna en framesida) som i sig har den sida med scriptet, då används top... Svårt att förstå? Trodde nog det...
Tänk dig såhär:
Sida 1 är en sida med ett script som ska ta reda på vad en annan sida har för värde, denna sida (med scriptet) kallas sida 1.
Sida 2 är en framesida där sida 1 ligger i en av ramarna.
Sida 3 är en framesida där sida 2 ligger i en av ramarna.
Om vi vill ha värdet på sidan 3 från sidan 1 använder vi top (top.location), om vi ska ha värdet på sidan 3 i sidan 2 använder vi parent (parent.location).
Skulle du vilja ha ut värdet på en fjärde sida, sida 4, som ligger i sida 2 skriver du parent.framens_namn.location i sida 1.

Nu hoppas jag på att du blivit lite klokare, detta är nämligen roliga saker att lära sig i JavaScript.

Nu tillbaka till scriptet jag skulle lära dig (att öppna en sida som finns i en frame i en annan frame eller kanske t.o.m. i helskärm).
Jag börjar med att skriva ut hur man "flyttar" sidan som finns i en ram till en annan:

<SCRIPT LANGUAGE="JavaScript">
<!--

parent.sidan_som_ska_forsvinna.location.href = parent.sidan_som_ska_komma_upp.location.href

//-->
</SCRIPT>
Skulle du skriva detta rakt av så skulle ju sidan som finns i ramen "sidan_som_ska_forsvinna" ersättas på direkten av sidan som finns i ramen "sidan_som_ska_komma_upp". Alltså bör du sätta detta i t.ex. en funktion och aktivera scriptet med en länk (<A HREF="JavaScript:scriptets_namn()">).
Skulle du vilja att sidan som finns i ramen (framen) "sidan_som_ska_komma_upp" ska komma upp i helskärm skriver du:
<SCRIPT LANGUAGE="JavaScript">
<!--

top.location.href = parent.sidan_som_ska_komma_upp.location.href

//-->
</SCRIPT>


Som vanligt...
Till nästa del.






Copyright © Omid Rouhani 1997-2022; Alla rättigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]