cookie om frame-pagina's te onthouden

Status
Niet open voor verdere reacties.

Stefanos1990

Gebruiker
Lid geworden
26 jul 2007
Berichten
61
hoi,

ik heb al op verschillende script sites enzo gezocht, maar ik heb nog niet gevonden wat ik zoek. dus kan hier iemand me helpen? ik heb niet zoveel ervaring met javascript, maar ik heb al wel een paar keer wat simpele scriptjes aangepast voor het gebruik op mijn sites.

Ik wil een site maken met frames, waarbij in een cookie opgeslagen wordt wat de laatste pagina's in de frames waren.

dus bijvoorbeeld: een frameset met een top, en daaronder left en right. ik klik in left op een link naar left2. vervolgens sluit ik de browser af. en als ik dan weer terug kom en ik typ in: 'mijnsite.nl' dat ik dan ga naar een pagina met daarin: top, left2 en right.

kan dat?
 
Ja, dat kan. Als eerste neem je het volgende javascript op in de head van het document waar het frameset in staat:

HTML:
<script type="text/javascript">
<!--

var setcookieallowed = false;
window.onload = function() {
	for (var i = 0; i < window.frames.length; i++) {
		substringstart = document.cookie.indexOf('frame' + i + '=');
		if (substringstart > -1) {
			window.frames[i].location.href = unescape(document.cookie.substring(substringstart + ('frame' + i + '=').length, (document.cookie.indexOf(';', substringstart) == -1 ? document.cookie.length : document.cookie.indexOf(';', substringstart))));
		}
	}
	setcookieallowed = true;
}

//-->
</script>

Daarna maak je het javascriptbestand framecookie.js aan:
Code:
window.onload = function() {
	if (top.setcookieallowed) {
		expires_date = new Date();
		expires_date.setYear(expires_date.getFullYear() + 10);
		for (var i = 0; i < top.frames.length; i++) {
			if (top.frames[i].document == document) {
				document.cookie = 'frame' + i + '=' + escape(location.href) + ';expires=' + expires_date.toGMTString();
			}	
		}
	}
}

Als laatste voeg je aan de head van elk bestand dat in het frame kan komen te staan de volgende HTML-code toe:
HTML:
<script type="text/javascript" src="framecookie.js"></script>

Succes! :thumb: Als het niet lukt, hoor ik het nog wel.
 
heel erg bedankt!!!
ik had de hoop al opgegeven

ok, ik heb gedaan wat je zei, maar het werkt nog niet.
ik heb het ff in de bijlage gezet.
het zal wel een heel simpel foutje zijn dat ik gemaakt heb, maar ik zie het niet.
ik moet vanavond maar eens gaan zoeken, maar misschien zie jij het nu al...
 

Bijlagen

Je hebt een paar kleine foutjes gemaakt in index.html. Als in je pagina een frameset voorkomt mag er géén body-element meer in voorkomen (m.u.v. in de inhoud van het noframe-element). Het frameset moet het body-element vervangen en moet dus ook niet in de inhoud van het head-element staan.
De tweede fout die je maakte is dat de javascript code niet op dezelfde regel mag staan als de commentaar code <!--.
Na het oplossen van die foutjes krijg je dan zoiets:
HTML:
<html><head>
<title>cookie test</title>

<script type="text/javascript"> <!-- 
var setcookieallowed = false; window.onload = function() { for (var i = 0; i < window.frames.length; i++) { substringstart = document.cookie.indexOf('frame' + i + '='); if (substringstart > -1) { window.frames[i].location.href = unescape(document.cookie.substring(substringstart + ('frame' + i + '=').length, (document.cookie.indexOf(';', substringstart) == -1 ? document.cookie.length : document.cookie.indexOf(';', substringstart)))); } } setcookieallowed = true; }
//--> </script>

</head>
<frameset rows="60,*" border="0">
<frame src="top.html" SCROLLING="no" frameborder="0">
<frame src="bottom.html" name="bottom" frameborder="0">
</frameset><noframes></noframes>
</html>
 
ow, bedankt, dat heb ik nooit geweten omdat het normaal gesproken wel altijd werkt. nu werkt het perfect :)
 
Dat werkt normaal inderdaad wel, maarom dat het eigenlijk geen correcte HTML is (maar de browser snapt het toch), pakt Javascript het niet goed. ;)
 
hmm, ok ik heb nu nog een probleempje, namelijk dat het met maximaal 2 frames kan.
klopt dit, of doe ik iets fout? zonee, wat kan ik eraan doen zodat ik het met meer dan twee frames kan doen?

trouwens nogmaals heel erg bedankt!!
 

Bijlagen

Ik weet niet wat je fout doet, want bij werkt het het door jou gestuurde script gewoon (na toevoeging van framecookie.js)...
 
hmmm... wat raar, bij mij werken alleen de eerste twee frames, op zowel firefox als IE...
mjah, het zal uiteindelijk wel lukken denk ik als ik alles es opnieuw opstart ofzo...

trouwens, ik heb je website bekeken (gy3b) ziet er goed uit, en die lay-out changer is ook een leuke toevoeging :) alleen op firefox (bij mij dan) staat de lichtkrans iets lager dan die balk waar de tekst overheen hoort te schuiven. misschien heb je er wat aan als ik het zeg. verder heel mooi :)
 
trouwens, ik heb je website bekeken (gy3b) ziet er goed uit, en die lay-out changer is ook een leuke toevoeging :) alleen op firefox (bij mij dan) staat de lichtkrans iets lager dan die balk waar de tekst overheen hoort te schuiven. misschien heb je er wat aan als ik het zeg. verder heel mooi :)
Ja dat wist ik al. Maar ik vond het niet de moeite om het voor Firefox alleen aan te passen. :p Er zit bij ons toch niemand in de klas die Firefox gebruikt. De site wordt trouwens niet meer gebruikt helaas... Komend schooljaar zijn er geen klassen meer i.v.m. vakkenpakketten :(

Maar bedankt voor het compliment ;)
 
waarom maak je geen gym4 site?

een vriend van me had vorig jaar een gym5 site gemaakt, was een groot succes. vooral het downloaden van samenvattingen voor pw's was erg populair, ook onder mensen van de havo en het atheneum :P

(sorry voor de offtopic, is dat verboden?)
 
waarom maak je geen gym4 site?

een vriend van me had vorig jaar een gym5 site gemaakt, was een groot succes. vooral het downloaden van samenvattingen voor pw's was erg populair, ook onder mensen van de havo en het atheneum :P
Geen zin meer in :p Ben bezig met iets anders :)
(sorry voor de offtopic, is dat verboden?)
Verboden is een groot woord, maar heel veel offtopic achter elkaar is niet gewenst hier. ;)
 
Laatst bewerkt:
ok, de volgende test is weer mislukt, wat doe ik dit keer fout?
als je de werkende pagina met frames laadt in een andere frame, dan werkt het niet. je kan dan geen nieuwe cookie schrijven/ updaten.
 
Nee, dat klopt. Daar had ik niet op gerekend. Ik zal vandaag daarvoor het script aanpassen.
 
Lukt het niet? Super trouwens dat je me helpt :) ik ga zeker een dankwoord op de site zetten als ie klaar is.
 
Het is inderdaad niet makkelijk. En ik heb momenteen nog een aantal andere dingen te doen, dus het kan wat vertraging oplopen. Maar ik zorg ervoor dat je het nog krijgt. ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan