Frameset output

Fra Kommunikation-IT Holstebro HTX
Skift til: navigering, søgning

Hvordan anvendes et framesæt som output

Man skal opstille et framesæt, hvor man kan have den kode der afvikles i en frame (dette vil normalt ligge i en selvstændig HTML-fil).

Man kan så opstille en eller flere andre frames til at skrive ud i - det kommer an på hvad man skal lave, og hvilket udseende man ønsker

Eksempel på anvendelse af framesæt som output

Koden har en frame med nogle knapper, hvor man kan lægge noget indhold i en anden frame, og man kan slette en frame. Der er også muligheden for at styre et ur i en 3. frame.

Framesættet er sat op i følgende kode:

<head>
  <title>Illustration af frames</title>
</head>
<html>
<!-- Lav et frameset med to vandrette rammer, menuen i toppen og indholdet i bunden  -->
<frameset rows="25%,75%">
	<!-- Lav toppen til et nyt framesæt, delt lodret -->
	<frameset cols="*,120">
		<frame name="top" src="out4top.html">
		<frame noresize name="klokken" src="">
	</frameset>
	<frame noresize name="bund" src="">
	<!-- Skriv en besked, hvis dokumentet åbnes i en ældre browser -->
	<!-- Ellers kan der ikke skrives noget ud fra dette dokument -->
	<noframes>
		<body>Din browser kan ikke håndtere rammer (frames) !
		</body>
	</noframes>
</frameset>
</html>

De to frames til output er tomme. Det eneste de skal have er et navn, så man kan skrive til den rigtige frame.

Framen med knapperne indeholder alt den kode der laver noget. Denne kode er ret stor, da der er mange forskellige funktioner i den.

<head>
<!-- Man kan ikke angive nogen titel her -->
<script type="text/javascript" language="JavaScript">

var klik = 0;

function indtast() {
	tekst = prompt("Indtast et eller andet: ", "");
	top.bund.document.write("Du skrev noget ind, det var: " + tekst + "<br />");
	klik++ ;
	top.bund.document.write("Du har klikket " + klik + " gange.<br />");
}	

function fastTekst() {
	top.bund.document.write("Her skrives der bare en fast tekst i indholdsruden.<br />");
	top.bund.document.write("Der kan egentlig udskrives hvad som helst.<br />");
	klik++ ;
	top.bund.document.write("Du har klikket " + klik + " gange.<br />");
}

function slet() {
	top.bund.document.close();
	top.bund.document.write();
	klik++;
}

function leadZero(tal) {
	if (tal < 10) {
		tal = "0" + tal;
	}
	return tal;
}

function opdaterUr() {

	// Lokal variabel med tiden (så den forsvinder igen)
	var nu = new Date();
	time = nu.getHours();
	minut = nu.getMinutes();
	sekund = nu.getSeconds();

	// Skriv klokken og luk tekst-outputtet, så det er et frisk vindue der skrives i næste gang der kaldes
	top.klokken.document.write( "Klokken er " + leadZero(time) + ":" + leadZero(minut) + ":" + leadZero(sekund) );
	top.klokken.document.close();

	// Global variabel med en timeout, som opdaterer vinduet efter 1 sekund
	// Variablen skal være global, for at lukKlokken kan se den
	timer = window.setTimeout("opdaterUr()", 1000);
}

function startUr() {

	opdaterUr();
	klik++;
}

function stopUr() {
	// Stopper timer-variablen, så der ikke kommer flere timeouts
	if (timer) {
		window.clearTimeout(timer);
		timer = null;
	}
	top.klokken.document.close();
	top.klokken.document.write(" "); // Der skal skrives noget andet for at det sletter
	klik++;
}	
</script>
</head>
<body>
<h1>Skrivning i Frames</h1>
<!-- Knapperne herunder bliver brugt til at udføre handlingerne med -->
<input type="button" value="Fast Tekst" onClick="fastTekst();">  
<input type="button" value="Indtastning" onClick="indtast();">  
<input type="button" value="Start uret" onClick="startUr();">  
<input type="button" value="Stop uret" onClick="stopUr();">  
<input type="button" value="Slet indholdsruden" onClick="slet();">
</body>

Filen med koderne kan hentes i en Zip-fil

Fordele ved framesæt som output

Fordelen ved at anvende framesæt som output er, at man kan anvende document.write over i en anden frame, og dermed udskrive rigtigt meget ved hjælp af forskellig kode.

Ulemper ved framesæt som output

Ulempen er at frameset ikke er standard i HTML længere, så der kan være problemer med hvor længe browsere understøtter denne teknik.