Lars <webird@jubiimail.dk> writes:
> Jeg ville høre om i kunne hjælpe mig til en kode som holder
> rammerne på plads men samtidig gør at man stadig åbner den side
> man gerne ville se (
http://www.webird.dk ). Jeg har foreløbigt
> et script som gør at man altid kommer til forsiden, men ville
> gerne have at hvis man f.eks. ønsker at komme til:
>
http://www.webird.dk/foder.htm
> at man så kommer til at se denne side inde i den pågældende frame
> uden først at skulle navigere fra forsiden.
>
> Jeg har 2 frames, altså en "index.htm" med 1 stor frame, og
> derefter en side med 2 mindre frames "frame.htm" ("main" og
> "navigation") som åbner inde i index.htm.
Altså: Hvis en side loades uden for dit frameset, så vil du skifte til
framesettet, men vil gerne have at main-framen viser den oprindelige side
og ikke en fast side.
Der er et par forskelige muligheder.
Under alle omstændigheder skal undersiderne have noget kode på formen
<script type="text/javascript">
if (window == top) { // ej i frame
location.href = "/frameset.html";
}
</script>
Her kan man så enten fortælle framesettet hvilken side man er ved at
tilføje noget til url'en,
location.href = "/frameset.html?"+escape(location.pathname);
eller man kan lade den selv gætte det.
På frameset-siden skal man så ændre framens indhold.
<html>
<head>
<script type="text/javascript">
function setMain() {
if (...) {
frames["main"].src = ...
}
}
</script>
</head>
<frameset onload="setMain()">
<frame name="index" ...>
<frame name="main" src="...">
</frameset>
</html>
Jeg kan ikke lige finde andre lovlige måder at tilføje scripts på.
Denne måde betyder at main-framen er loadet færdig før den bliver
udskiftet. Alternativet er at skrive hele framesettet med javascript.
Det er desværre ikke lovligt at putte script-tags ind i et frameset
(så vidt jeg kan se ved at læse specifikationen). Det vil sikkert
virke alligevel.
Hvis man har kodet sidens adresse i URL'en, så skal man skrive
if (location.query) {
frames['main'].src = location.query.substring(1);
}
Ellers kan man måske bruge
if (document.referrer.match(/^http:\/\/minserver.dk\/)) {
frames['main'].src = document.referrer;
}
I begge tilfælde er det nok sundest at tilføje nogle flere tests
for at undgå at frame noget forkert.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:
http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'