EchoEcho.Com
KOMPLETTE WEBKURSER

HJEM KURSER JAVASCRIPT AVANCERET     
EchoEcho.Com
TOOLS & RESSOURCER
 HJEM 
 
 KURSER 
 
 RESSOURCER 
 
 REDSKABER 
 
 DOKUMENTATION 
   
 OVERSIGT 
  
  SØG PÅ DETTE SITE

FORESLÅ DETTE SITE
FORESLÅ DETTE SITE      

FRAMESET SCRIPT

INTRODUKTION


TEKNIKKEN


KODEN


EKSEMPEL

Frameset Script :
KODEN

Som nævnt på forrige side, er du nødt tilat kopiere et lille script til hver af dine sider samt omskrive dit frameset en smule.





KODEN TIL DINE UNDERSIDER
Scriptet der skal kopieres og indsættes på hver af dine undersider ser således ud:

<HEAD>

<script>
function detect()
{
framesetpage="mitframeset.htm";
thispage=window.location.href;
if (thispage.indexOf('://')<0) {thispage="://"+thispage;};
prefix=thispage.substring(0,thispage.lastIndexOf('://'));
suffix=thispage.substring(thispage.lastIndexOf('://')+3,thispage.length);
// alert('the subpage is:['+prefix+']['+suffix+']');
if (parent.location.href==window.location.href) {parent.location.href=framesetpage+"?"+prefix+"&&&"+suffix};
}
</script>

</HEAD>


Du skal tilpasse denne linie så den passer til dine egne sider (d.v.s. skriv navnet på den side du ønsker der skal loades hvis framesettet åbnes almindeligt):

framesetpage="mitframeset.htm";


Desuden skal du tilføje en onLoad-event til <BODY>-tagget.

<BODY onLoad="detect()">


Efter tilføjelsen af disse stumper kode til hver af dine undersider er du klar til det sidste skridt: indtastning af koden på selve frameset-siden.

Inden vi forklarer hvordan det gøres, vil vi dog lige bruge et par linier på at forklare scriptet der bruges på undersiderne.




HVORDAN DET VIRKER

Denne linie kontrollerer om siden er loaded i et frameset:

if (parent.location.href==window.location.href)


parent.location.href returnerer url'en på den overordnede frame.
window.location.href returnerer url'en på den aktuelle side.

Hvis disse to er ens - så er siden ikke loadet i et frameset.

I det tilfælde vil denne linie blive udført:

parent.location.href=framesetpage+"?"+prefix+"&&&"+suffix;


Den åbner frameset siden på samme måde som hvis du havde indtastet: http://www.dinadresse.dk/framesetside.htm?http&&&www.dinadresse.dk/underside.htm.


Tricket bad hele dette script er at der sendes informationer fra undersiden til framesettet via javascripts indbyggede window.location.search objekt.

Undersiden kalder simpelthen framesettet med en url der ser således ud: www.minadresse.dk/framesetside.htm?blablabla

Den tekst der følger efter spørgsmålstegnet kan læses via javascript - og det er denne information framesettet bruger til at finde ud af hvilken underside der skal loades ind.





KODEN FOR FRAMESET SIDEN

Dette er scriptet der skal kopieres og indsættes på din frameset side:

<HTML>
<HEAD>
<TITLE>Min Frameset Side</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
defaultsubpage="defaultsub.htm";
if (location.search) {subpage=location.search.substring(1)}
else {subpage=defaultsubpage}

if (subpage.indexOf('&&&')>=0) {
prefix=subpage.substring(0,subpage.indexOf('&&&'))+"://";
suffix=subpage.substring(subpage.indexOf('&&&')+3,subpage.length);
subpage=prefix+suffix;
}
// -->
</SCRIPT>

</HEAD>



<SCRIPT>
document.write('<FRAMESET COLS="50%,50%">');
document.write('<FRAME SRC="navpage.htm" NAME="nav">');
document.write('<FRAME SRC="'+subpage+'" NAME="main">');
document.write('</FRAMESET>');
</SCRIPT>


</HTML>


I eksemplet har vi benyttet et frameset med to kolonner på 50% bredde. Du skal naturligvis tilpasse frameset-koderne så de passer til dit eget frameset. (Og eventuelt indsætte flere document.write-sætninger hvis din side indeholder mere end to framevinduer)

Derudover skal denne linie tilpasses:

defaultsubpage="defaultsub.htm";

Erstat defaultsub.htm med navnet på din underside der skal loades hvis framesettet bliver loadet normalt (ikke bliver kaldt fra en underside).

Bemærk også at i denne linie:

document.write('<FRAME SRC="'+subpage+'" NAME="main">');

er main er navnet på den "intelligente" frame. Du kan vælge et hvilket som helst navn for framen - vi brugte blot navnet main i vores eksempel.





HVORDAN DET VIRKER

Disse linier undersøger om en værdi er angivet efter et spørgsmålsteg i url-linien (d.v.s. om framesettet er loadet af en underside):

if (location.search) {subpage=location.search.substring(1)}
else {subpage=defaultsubpage}


Hvis en værdi var angivet efter et ? i url'en, så vil subpage være lig med værdien. Ellers vil subpage være lig med navnet på den side du har angivet som default (i vores eksempel ville det være "defaultsub.htm").

Altså, hvis siden blev kaldt af en underside der blev forsøgt loadet udenfor framesettet, så vil url'en se nogenlunde således ud::

http://www.dinadresse.dk/framesside.htm?http&&&www.dinadresse.dk/subpage.htm

Af tekniske årsager sender undersiden ikke URL'en som den er. Den sender &&& istedet for det normale :// som du almindeligvis ser i en URL. (Årsagen er at Netscape ikke vil acceptere at disse tegn sendes som en del af en URL).

Denne URL - baseret på &&& - bliver oversat til en ægte URL af disse linier i scriptet:

if (subpage.indexOf('&&&')>=0) {
prefix=subpage.substring(0,subpage.indexOf('&&&'))+"://";
suffix=subpage.substring(subpage.indexOf('&&&')+3,subpage.length);
subpage=prefix+suffix;
}


Den sidste del af scriptet er de document.write sætninger der skriver HTML-koden for selve framesettet ind på siden.

document.write('<FRAMESET COLS="50%,50%">');
document.write('<FRAME SRC="navpage.htm" NAME="nav">');
document.write('<FRAME SRC="'+subpage+'" NAME="main">');
document.write('</FRAMESET>');


Variablen subpage indgår i linien der angiver den "intelligente" frame. Denne variabel indeholder enten URL'en på en default underside, eller - hvis framesettet blev loadet af en underside - URL'en på den pågældende underside.

Mens de øvrige document.write sætninger simpelthen er flad HTML skrevet ind på siden via javascript, så er det i denne ene linie at alt hekseriet sker. Det er i denne linie at javascript definerer et framevindue der loader den side der blev angivet efter spørgsmålstegnet i URL'en.



<< TILBAGE
LÆS MERE >>

JAVASCRIPT MENU

JAVASCRIPT INTRO


ANIMEREDE KNAPPER


BROWSER DETECTION


COOKIES


POPUP VINDUER


DROP DOWN MENU


FORM VALIDERING


FRAMESET SCRIPT


MULTI LINK








EchoEcho.Com
KOMPLETTE WEBKURSER
 HJEM 
 
 KURSER 
 
 RESSOURCER 
 
 REDSKABER 
 
 DOKUMENTATION 
   
 OVERSIGT 
EchoEcho.Com
TOOLS & RESSOURCER

(c) Copyright 1998-1999 NetKontoret - All Rights Reserved