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 ]