fluxisMedlem sedan feb. 200178 inlägg
jag undrar om det finns någon kod till att kolla så att man sitter i frames.
ex på en sida :
----------------
| 1 | 2 |
----------------
(1 = en sida, 2 = en annan sida)
jag vill att dem här två sidorna alltid ska vara laddade. så att man inte bara kan kolla på sida 2. utan om sidan 1 inte laddas så ska sidan laddas om så att jag får upp :
----------------
| 1 | 2 |
----------------
och inte :
----------------
| 2 |
----------------
hoppas att ni fattar....
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Jo, det går ju att kolla det så här:
<script language="JavaScript">
<!--
function checkframes(){
if (top.location.href == location.href){
top.location.href == "frameset.html";
}
}
//-->
</script>
<body onload="checkframes();">
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
Söndagen den 3 juni kommer webForum-servern att tas ner för
systemunderhåll.
Avbrottet kommer att ske under dagtid. För uppdaterad information se
Serverstatus.
JojoxxMedlem sedan juni 20004 306 inlägg
Ett litet ex. Om vi börjar med att bygga ett frameset-dokument som innehåller denna kod, vi kallar dokumentet fr.html;
<frameset cols="50%,*">
<frame src="a.html" name="a">
<frame src="b.html" name="b">
</frameset>
På sidan a.html lägger du i body in;
<body onLoad="if(parent.b.location.href!='urlen_till_b.html'){ parent.b.location.href='b.html'; }">
och på sidan b.html;
<body onLoad="if(parent.a.location.href!='urlen_till_a.html'){ parent.a.location.href='a.html'; }">
Eftersom vi exekverar scriptet först när sidan är laddad så borde man komma runt e.v. timing-problem som annars kan uppstå.
------------------
/ J
JojoxxMedlem sedan juni 20004 306 inlägg
Hoppsan, var visst lite sen där. Men (Erik), eftersom scriptet ligger i frameset-dokumentet bör man lägga eventet i <frameset> istället för <body> :)
Det skyddar däremot inte mot att man länkar iväg sig från sidorna till andra sidor när framesetet en gång är laddat.
------------------
/ J
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Jag tänkte att den koden skulle ligga på undersidorna. Då kan ingen länka till undersidorna. Gör de det så laddas framsetet in.
Smart vore om man med JavaScript eller något serverside-språk laddade in sidan som blev länkad i framesetet.
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
Söndagen den 3 juni kommer webForum-servern att tas ner för systemunderhåll.
Avbrottet kommer att ske under dagtid. För uppdaterad information se Serverstatus.
fluxisMedlem sedan feb. 200178 inlägg
erik :
ska jag lägga
<script language="JavaScript">
<!--
function checkframes(){
if (top.location.href == location.href){
top.location.href == "frameset.html";
}
}
//-->
</script>
<body onload="checkframes();">
i sidan 2 och sidan 1 ??
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Jepp..
Det känner sen av om sidan laddats ensam eller om den laddats inuti ett frameset. :)
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
Söndagen den 3 juni kommer webForum-servern att tas ner för systemunderhåll.
Avbrottet kommer att ske under dagtid. För uppdaterad information se Serverstatus.
fluxisMedlem sedan feb. 200178 inlägg
jag får inte koden att fungera...
sida : index.html
<html>
<head>
<title>frames</title>
</head>
<frameset cols="50%,*">
<frame src="a.html" name="a">
<frame src="b.html" name="b">
</frameset>
</html>
sida : a.html
<html>
<head>
<title>a</title>
</head>
<script language="JavaScript">
<!--
function checkframes(){
if (top.location.href == location.href){
top.location.href == "index.html";
}
}
//-->
</script>
<body onload="checkframes();">
</body>
</html>
sida : b.html
<html>
<head>
<title>b</title>
</head>
<script language="JavaScript">
<!--
function checkframes(){
if (top.location.href == location.href){
top.location.href == "index.html";
}
}
//-->
</script>
<body onload="checkframes();">
</body>
</html>
jag fattar inte vad som är fel..
för om jag bara öppnar b.html så kommer bara b.html upp och inte hela index.html, jag vill att index.html ska laddas om man bara går in på ex. b.html... hoppas att ni förstår...
JojoxxMedlem sedan juni 20004 306 inlägg
Erik, jag läste lite fel. Jag läste if(top.location.href != location.href), alltså ett vanligt framebrytarscript i princip. Men om vi tittar på din kod.
<script language="JavaScript">
<!--
function checkframes(){
if (top.location.href == location.href){
top.location.href == "frameset.html";
}
}
//-->
</script>
<body onload="checkframes();">
Så känner den bara av om aktuell sida ligger laddad överst i fönstret, och i så fall skall den ersättas med frameset-dokumentet. Ligger sidan laddad i en underframe (vilken som hellst) så händer ingenting. Likaså finns inget skydd om du länkar in andra sidor i den ena eller andra framen.
------------------
/ J
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Man kanske skulle kunna skriva typ:
if(top.location.href != "http://.../index.html"){..}
Eller vad säger du Jojoxx?
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
Söndagen den 3 juni kommer webForum-servern att tas ner för systemunderhåll.
Avbrottet kommer att ske under dagtid. För uppdaterad information se Serverstatus.
JojoxxMedlem sedan juni 20004 306 inlägg
Ja, eller ännu bättre, if(parent.location.href!="url'en_till_frameset-sidan") så kan frameset-dokumentet ligga i en underframe, men sidan a/b.html måste ligga under frameset-dokumentet. *phew* :)
Alltså;
<body onLoad="if(parent.location.href!='url'en_till_frameset.html'){ parent.location.href='frameset.html'; }">
Efter att ha tittat lite nogrannare på mitt exempel ser jag att detta inte heller skulle fungera speciellt bra. Problemet är att skydda från att man när man väl laddat ex. a.html/b.html i resp. frame därifrån laddar in andra sidor, men det är väl bäst att hålla koll på när man gör sidorna.
Jag tror detta är det bästa exemplet utan att spåna ur alltför mycket.
------------------
/ J
fluxisMedlem sedan feb. 200178 inlägg
jag får det inte att fungera...
sidan bara laddas om hela tiden den slutar aldrig att ladda om.
jag fattar inte hur man ska göra nu...
<body onLoad="if(parent.location.href!='url'en_till_frameset.html'){ parent.location.href='frameset.html'; }">