webForumDet fria alternativet

länk till ett existerande frameset

10 svar · 537 visningar · startad av Ljors

LjorsMedlem sedan juli 200213 inlägg
#1

Hej!!

Gjorde en sökning och hittade den här tråden:
tråden!

Det framgick inte utav svaren om det är möjligt så jag tänkte fråga samma sak igen.

Jag har en "startsida" från den kan man ta sig till huvudsidan som är indelad i 2 frames(top/main).
Från "startsidan" har jag länkar som tar surfaren direkt till undersidor som vanligtvis presenteras i "main" fönstret.
Vad som händer är att man inte får med sig framesetet utan endast infosidan. Går detta att ordna på något sätt??

//Ljors

hellboyMedlem sedan aug. 200349 inlägg
#2

Varför har du frames? Vad har du i top-framen som inte kan läggas i en tabell på "main-sidan" istället?

LjorsMedlem sedan juli 200213 inlägg
#3

Jag har en meny.

Det hela skulle väl gå att lösa med tabeller istället, men jag valde att köra med frames.

Är jag körd nu??

Jag menar det skulle ta väldans lång tid att göra om alla sidorna :/

hellboyMedlem sedan aug. 200349 inlägg
#4

Annars får du på nått sätt ladda olika framesets vid varje länk från förstasidan..

Helt körd är du ju inte.. du kanske kan köra en include på menyn.. då behöver du bara lägga till den längst upp på varje sida..

LjorsMedlem sedan juli 200213 inlägg
#5

hellboy skrev:

Helt körd är du ju inte.. du kanske kan köra en include på menyn.. då behöver du bara lägga till den längst upp på varje sida..

phew...

Du kan möjligtvis inte förklara hur jag skulle kunna lösa det?

Ljors = novis :P

hellboyMedlem sedan aug. 200349 inlägg
#6

gör menyn till en fristående sida, som du har nu antar jag..

sen där du vill ha in den på varje sida skriver du

<!--#include file="meny.htm"-->

då behöver du bara uppdatera en sida i framtiden om du ska ändra i menyn t.ex.. smidigt sätt!

LjorsMedlem sedan juli 200213 inlägg
#7

Jag provade det där med include.. Ser ju rätt ok ut fast det funkade inte så bra med usemaps ://

hellboy!

Du nämnde nåt om att ladda frameset vid varje länk.. hur gör man det??

//Ljors

LjorsMedlem sedan juli 200213 inlägg
#8

typ nåt i stil med:

<a href"balblab.htm" framesetopen="top=meny.htm" framesetopen="main=balblab.htm">lalalla</a>

tänk om det ändå hade varit så enkelt :D

hellboyMedlem sedan aug. 200349 inlägg
#9

Vad hände med din usemap då?

Använder du asp är det ganska enkelt. Med ren HTML kan man inte, mig veterligen, göra som du skrev där.. även om det hade vart skönt! :)

Det jag menade var att du får skapa flera olika framesets, beroende på vilken sida du vill ska öppnas i "main"-fönstret.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#10

Ljors skrev:

typ nåt i stil med:

<a href"balblab.htm" framesetopen="top=meny.htm" framesetopen="main=balblab.htm">lalalla</a>

tänk om det ändå hade varit så enkelt :D

Nästan...

 <a href="balblab.htm" onclick="window.open('meny.htm','top');window.open('balblab.htm','main');">lalalla</a>

...alternativt...

 <a href="#" onclick="window.open('meny.htm','top');window.open('balblab.htm','main');window.open('balblab.htm','_slef');return false;">lalalla</a>
jarvkloMedlem sedan juli 20013 378 inlägg
#11

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 ;)

142 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
124 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)