if(self != top) >> reload

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb t volgende scriptje in mn index.asp... een pagina die de gehele frameset schrijft

if (self!=top)
{
top.location.replace(self.location);
}

dit stukje tjekt dus of index.asp op top wordt geladen... vreemd genoeg, wanneer ik index.asp laad.... herlaadt de pagina zich... m.a.w. bovenstaande script wordt uitgevoerd... toch lijkt het mij als ik index.asp oproep los van een frameset of wat dan ook dat deze file altijd op top staat.

doe ik iets fout ?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Je moet de check juist in de pagina's zetten die in de frameset geladen worden, en niet in de frameset zelf; je frameset is feitelijk geen window.

edit: op deze manier kan je zelfs voorkomen dat een pagina van jezelf in een foreign frame wordt geladen:

JavaScript:
1
2
3
4
5
6
7
// redirect when not in frames or in foreign frame
try {
  if (window.top == window.self || !(window.top.document.title = document.title)) top.location.replace('index.html');
} catch(e) {
  // security error so we are in a foreign frame
  top.location.replace('index.html');
}


met een serverside gegenereerde index kan je inderdaad mooi de opgevraagde pagina als argument meegeven.

[ Voor 65% gewijzigd door crisp op 25-08-2003 10:08 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
aah ok zoiets dacht ik ook al
je kunt alleen frames controleren t.o.v. andere frames en niet een pagina die frameset schrijft t.o.v. frames

Acties:
  • 0 Henk 'm!

  • wicher|IA
  • Registratie: November 2000
  • Laatst online: 10-04-2023
Hmm. Lees ik even niet goed of hebben de twee scripts beide verschillende doeleinden?

Senjees script lijkt als doel te hebben te voorkomen dat de framesetpagina op zijn beurt weer in een frame (van een andere pagina) wordt geladen.

Crisps script lijkt juist als doel te hebben te voorkomen dat een framepagina juist níet in de frameset wordt geladen.

[ Voor 3% gewijzigd door wicher|IA op 25-08-2003 11:36 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

wicher schreef op 25 August 2003 @ 11:36:
Hmm. Lees ik even niet goed of hebben de twee scripts beide verschillende doeleinden?

Senjees script lijkt als doel te hebben te voorkomen dat de framesetpagina op zijn beurt weer in een frame (van een andere pagina) wordt geladen.

Crisps script lijkt juist als doel te hebben te voorkomen dat een framepagina juist níet in de frameset wordt geladen.
Mijn code gaat niet in de frameset, maar in alle pagina's die in een frameset geladen moeten worden. De catch zorgt ervoor dat als de pagina of frameset zelf in een foreign frame staat (kan je ook bereiken door elk ander property van het top-document uit te vragen / proberen te wijzigen), de eigen frameset alsnog op top wordt gezet - precies datgene dat TS probeert te bereiken naar mijn mening.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

JavaScript:
1
2
3
4
if (self!=top)
{
top.location.replace(self.location);
}

net getest in een frameset pagina, maar werkt hier toch prima. Weet je zeker dat je geen puntkomma hebt staan na de afvraging?

Intentionally left blank

Pagina: 1