Ljors!
Om jag tolkar dig rätt så kan du lösa dina problem med en "omvänd framebrytare" - dvs en scriptsnutt och som ger möjlighet för en sida att "klä på sig" ett frameset i efterhand om någon råkar komma direkt in till sidan utan att passera "framesetet med menyn" ?
Hursomhelst - här kommer iaf ett förslag på lösning av *det* problemet... ;)
Först och främst ser du till att alla sidor kollar om de "ligger ensamma" (dvs inte i en frame).
Detta kan man kolla genom att jämföra top.location.href och location.href - har de samma värde, så ligger ju sidan "överst" i webbläsarfönstret.
Vad man vill göra om man upptäcker att sidan "ligger ensam", är att vidarebefordra besökaren till en separat "laddarsida" som skapar ditt frameset och samtidigt ser till att den aktuella sidan laddas i "main"-framen.
För att göra det, så behöver "laddarsidan" få reda på vilken sida det är som "anropar den" - I exemplet väljer jag att lägga detta i URL:en som en parameter när vidarebefordran sker...
Kodsnutt alltså:
Lägg följande kod utan radbrytningar i <body onload> på varje "undersida" såhär:
<body onload="if (top.location.href == location.href)
{top.location.href='inramare.html?inramad=' + location.href;}">
Ok - nu kan dina undersidor anropa "laddarsidan" när de känner sig ensamma - och tala om för den vem det är som anropar ;)
Laddarsidan i sin tur är i princip ganska enkel i sin funktion...
Den består av ett Javascript som skriver ut ditt frameset med document.write och fyller i adressen till undersidan som skall laddas i "main" från det värde som finns i den URL som laddarsidan anropades med ;)
Såhär:
<script type="text/javascript">
<!--
document.write('<frameset rows="100,*">');
document.write('<frame name="top" src="inramare_menu.html">');
if (getVar('inramad') != "") {
document.write("<frame name='main' src='");
document.write(getVar('inramad'));
document.write("'>");
}
else {
document.write("<frame name='main' src='inramare_start.html'>");
}
document.write('</frameset>');
// -->
</script>
OBS!
Exemplet innehåller inte all kod - den hittar du genom att kolla källkoden på sidorna som länkas nedan !)
Funktionen getVar() hittar du hos Jojoxx - exemplet Variabler i URL:en
Hela exemplet finns upplagd för provkörning - och det består av filerna
inramare.html
inramare_menu.html
inramare_start.html
och själva undersidan som inte "vill vara ensam":
krama_mig_med_ramar.html
Hoppas att detta kan hjälpa till att lösa ditt problem (även om det är scripts och inte "ren" html ;)
Förresten: Valet av att göra "vidarebefordran" från body onload och inte "direkt i koden" i exemplet är medvetet - jag har lagt det där för att undvika en del elaka cache-buggar i äldre webbläsare - men det är en annan historia ;)