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();">
11 svar · 165 visningar · startad av fluxis
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....
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();">
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å.
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.
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 :
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 ??
Jepp..
Det känner sen av om sidan laddats ensam eller om den laddats inuti ett frameset.
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...
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.
Man kanske skulle kunna skriva typ:
if(top.location.href != "http://.../index.html"){..}
Eller vad säger du Jojoxx?
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.
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'; }">