Toon posts:

Frames, volledig laden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een site met frames. Alles leuk en aardig, maar als ik een directe link naar een bepaald frame open, dan opent ie netjes alleen het desbetreffende frame :(

Is het mogelijk om op de één of andere manier een check te bouwen die kijkt of ''de complete site" wel geladen is, en niet alleen het frame waarnaartoe de link verwijst?

Voorbeeld:

http://www.lommersonline.com/site/nieuws.php?newsid=134

Dit is dus maar een deel van de site. Maar de rest wordt niet geladen, omdat de index.php niet geladen is (en die bevat de frameset)

  • wicher|IA
  • Registratie: November 2000
  • Laatst online: 10-04-2023
In de pagina die in het frame staat dit zetten:

JavaScript:
1
2
3
if (top == self) {
location = '[frameset]';
}

Op de plek van [frameset] de URL van de framesetpagina

------------------------------------------------

Je kunt het nog uitbreiden, zodat de framesetpagina wel weer de framepagina waar de bezoeker was automatisch weer in het juiste frame laadt:

in framepagina:
JavaScript:
1
2
if (top == self) {
location = '[frameset]'?inframe='+self.location.href;


in frameset:
JavaScript:
1
2
3
4
wls = window.location.search;
if (wls.length > 0) {
[framenaam].location.href = wls.substring(9,wls.length);
}

Hierbij voegt de code in de framespag dus ?inframe=blabla.html o.i.d. toe aan het URL van de framesetpagina, waarin vervolgens de javascript die blabla.html uitleest.
Als je echter al iets gebruikt waardoor er al variabelen uit een form o.i.d. via GET worden verstuurd, en er dus al ?a=b&c=d o.i.d. achter de URL staat werkt dit niet helemaal, aangezien dan het uitlezen via Javascript wat lastiger is. Dat is dan echter niet echt een probleem, aangezien je het dan ook wel zal kunnen uitlezen met de desbetreffende serversidetaal (PHP bijvoorbeeld).

------------------------------------------------

Je kan trouwens aanvullend ook nog het volgende in de framesetpagina zetten, zodat die zich juist uitbreekt als-ie zelf op zijn beurt in een frameset wordt geopend.

JavaScript:
1
2
3
if (top != self) {
top = self;
}

(als ik me niet vergis)

Het kan bijvoorbeeld dat een andere website die zelf uit een frameset bestaat, linkt naar jouw site, en dan jouw site in een frame opent, waardoor jouw site te weinig ruimte krijgt. Het voorgaande scriptje zorgt dat je dan het hele venster neemt.

Wat je ook kan doen is in dat geval een nieuw venster openen met je site, zodat de website waar de bezoeker vandaan komt niet verdwijnt.
Dan zou het worden:
JavaScript:
1
2
3
if (top != self) {
blank = self;
}

[ Voor 0% gewijzigd door wicher|IA op 07-10-2002 21:12 . Reden: wls.substring(9,wls.length) <- 9 ipv 1; daarna verdere aanvullingen ]


  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 13:53

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

JavaScript:
1
 parent.frames['framenaam'].document.complete;

Zoiets checkt of het document helemaal geladen is (werkt in iig bij img :P )

/edit:
dit slaat nergens op, dacht dat er wat anders stond :) nou schrijf je natuurlijk ook een vrij vaag verhaal... maar als je dus wilt weten of je pagina binnen een frameset geladen is, en zonodig eruit breken is vrij makkelijk:
JavaScript:
1
2
3
4
5
6
7
8
9
10
// parent url vragen
var parent_url = parent.document.location;

// eigen url vragen
var eigen_url = window.document.location;

// checken
if( parent_url != eigen_url){
  uitbreken, stoppen enz enz
}


/edit /edit:
nog een fout 7(8)7 maar goed, alleen != vervangen voor == en klaar is henk 8)7

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • wicher|IA
  • Registratie: November 2000
  • Laatst online: 10-04-2023
Prammenhanger schreef op 07 oktober 2002 @ 20:58:
[
dit slaat nergens op, dacht dat er wat anders stond :) nou schrijf je natuurlijk ook een vrij vaag verhaal... maar als je dus wilt weten of je pagina binnen een frameset geladen is, en zonodig eruit breken is vrij makkelijk:
JavaScript:
1
2
3
4
5
6
7
8
9
10
// parent url vragen
var parent_url = parent.document.location;

// eigen url vragen
var eigen_url = window.document.location;

// checken
if( parent_url != eigen_url){
  uitbreken, stoppen enz enz
}


/edit /edit:
nog een fout 7(8)7 maar goed, alleen != vervangen voor == en klaar is henk 8)7
Ik zou i.p.v. parent toch echt top gebruiken. Het kan namelijk ook voorkomen dat de framepagina in een frameset in een frameset zit, dan zit je met top sowieso goed, met parent niet.

De URI's vergelijken zoals bijv top_url == self_url is niet nodig, aangezien de frames zelf vergelijken, zo dus top == self ook werkt, en korter is. Maakt echter ook niet erg veel uit.

Verwijderd

Topicstarter
Wow.. bedankt! Ik ga eens even aan de slag.

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 13:53

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

wicher, ziet er wel _smerig_ uit. zal vast ook minder ondersteunt worden ofzo :P Bovendien houd ik van regelnummers :)

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • wicher|IA
  • Registratie: November 2000
  • Laatst online: 10-04-2023
wicher schreef op 07 oktober 2002 @ 21:05:
[...]

Ik zou i.p.v. parent toch echt top gebruiken. Het kan namelijk ook voorkomen dat de framepagina in een frameset in een frameset zit, dan zit je met top sowieso goed, met parent niet.
|:( Ik was er even niet helemaal bij.
Parent werkt in deze situaties net zo goed als top, hoewel de laatste wel logischer is.

Nog een klein uitlegje over de gebruikte Javascript-codes:

self is de pagina zelf
parent is de pagina een niveau boven de self, dat wil in dit geval zeggen de frameset waarin de pagina zit.
top is de pagina op het 'hoogste' niveau, dus de hoogste framesetpagina, die zelf niet meer in een frameset zit.

window.location.search (door mij ook afgekort in het script als wls is in het volgende url: 'http://www.domein.nl/pagina.html?variabele=waarde' het deel '?variabele=waarde'

  • wicher|IA
  • Registratie: November 2000
  • Laatst online: 10-04-2023
Prammenhanger schreef op 07 oktober 2002 @ 21:58:
wicher, ziet er wel _smerig_ uit. zal vast ook minder ondersteunt worden ofzo :P
Wat maakt mijn code smeriger dan de jouwe? :P Jij doet het alleen wat omslachtiger en onlogischer >:)
Bovendien houd ik van regelnummers :)
:?

Verwijderd

Topicstarter
Oke.. het werkt! Natuurlijk te bewonderen op:
http://www.lommersonline.com/site/nieuws.php?newsid=134

Zoals je ziet wordt het hoofdframe netjes geladen bij een link naar een direct nieuwsitem.

Dank

  • wicher|IA
  • Registratie: November 2000
  • Laatst online: 10-04-2023
Je kan trouwens ook nog het volgende doen:

JavaScript:
1
2
3
if (top == self) {
location.replace('[frameset]');
}

ipv location = '[frameset]';
Het verschil is dat bij location.replace de pagina in de geschiedenis echt wordt vervangen.
Dus dat als iemand naar nieuws.php?nieuwsid=134 gaat, en dus op index.php?news_id=134 terecht komt, en vervolgens daar op de terug-knop van de browser drukt hij (/zij) niet terug gaat naar nieuws.php maar naar de pagina daarvoor in de geschiedenis.

Verwijderd

Topicstarter
wicher schreef op 07 oktober 2002 @ 23:33:
Je kan trouwens ook nog het volgende doen:

JavaScript:
1
2
3
if (top == self) {
location.replace('[frameset]');
}

ipv location = '[frameset]';
Het verschil is dat bij location.replace de pagina in de geschiedenis echt wordt vervangen.
Dus dat als iemand naar nieuws.php?nieuwsid=134 gaat, en dus op index.php?news_id=134 terecht komt, en vervolgens daar op de terug-knop van de browser drukt hij (/zij) niet terug gaat naar nieuws.php maar naar de pagina daarvoor in de geschiedenis.
Kijk, dát is duidelijk taal! :D Merci!

Verwijderd

maar hoe doe je zoiets dan

Verwijderd

Topicstarter
Wat bedoel je precies?

Verwijderd

Kijk ook eens hier :

http://developer.irt.org/script/288.htm

of hier :

http://tech.irt.org/articles/js126/index.htm

Maar is het ook niet mogelijk om de volgorde van laden vast te leggen in een javascript ?
Pagina: 1