Forsiden » JavaScript » Frame Buster

Webdesign 101: Frame Buster

Intet er så irriterende for en webdesigner som at få sin smukt udtænkte side presset ind i en tilfældig ramme (frame) hos en eller anden amatørwebsnedker - eller endnu værre - en professionel designer, der bare har misforstået noget.

Læg mærke til, at denne side efter 15 sekunders forløb bryder ud af den ramme, jeg har læst den ind i, og overtager hele browservinduet.

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
	<!-- Skjul script for gamle browsere
	setTimeout ("skiftSide()", 15000);

	function skiftSide() {
		if (self.parent.frames.length != 0)
			self.parent.location=document.location;
		}

	// slut skjul script for gamle browsere -->
</SCRIPT>

Du sætter selv tidsperioden ved at rette tallet 15000 (millisekunder) til det antal sekunder * 1000 du ønsker der skal gå, inden den ramme, din side er indlæst i, sprænges.

self.parent.frames.length!=0 undersøger, om den aktuelle side ligger top i browservinduet. Er det ikke tilfældet, sørger sætningen self.parent.location=document.location for, at den komme til det.

Den direkte metode

	<script type="text/javascript">
	if (top.location!=self.location)
	top.location.href="frameset.htm"
	</script>

eller

	<script type="text/javascript">
	if (top.location!=self.location)
	top.location.replace=("frameset.htm")
	</script>

Forskellen på de to metoder

top.location.href indlæser blot en ny side. Den foregående side - det vil sige det frameset, der indlæste din side i en ramme, ligger fortsat som netop den foregående side i browserens historik. Det betyder, at et klik på browserens tilbage-knap bringer læseren tilbage til dette frameset, der laver det samme nummer é gang til.

top.location.replace() erstatter derimod den foregående side i historikken. Det betyder, at tilbage-knappen ikke kan referere til dette frameset, men går helt tilbage til den næstforegående side.

Den sidste metode er derfor den, jeg vil foretrække, også selvom det ikke er den, der er anvendt i denne demo.