[JS] Window parent of parent

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Vircos
  • Registratie: Januari 2008
  • Laatst online: 11-10 21:37
Goedemiddag allen,

Ik ben momenteel bezig met een uitbreiding op een bestaande webapplicatie, maar met mijn beperkte Javascript kennis kom ik er niet helemaal uit.

Ik probeer in een stukje javascript de volgende variabele te zetten:

code:
1
var parent = parent.parent;


Dit vinden zowel Chrome als Firefox prima. IE 11 komt echter met de volgende foutmelding:
Kan de eigenschap parent van een niet-gedefinieerde verwijzing of een verwijzing naar een lege waarde niet ophalen
Heb het internet afgestruind naar een oplossing, maar die heb ik helaas nog niet mogen vinden.
Heeft iemand nog een idee?

Alvast bedankt :)

Acties:
  • 0 Henk 'm!

  • sjimster
  • Registratie: November 2010
  • Laatst online: 02-04 12:56

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
De parent in de [mono]parent.parent[/i] expressie is de window.parent property.
In browsers verwijst window.parent voor een top-level window wat geen echte parent heeft naar zichzelf:
JavaScript:
1
window.alert( window == window.parent ) // true


In IE verwijst window.parent voor een top-level window kennelijk naar de speciale undefined waarde die aangeeft dat iets (nog) geen waarde toegekend heeft gekregen. Deze speciale waarde is, zoals de naam al aangeeft, ongedefinieerd en heeft dus ook geen parent property. Dus zal IE zodra je parent.parent (oftewel: de parent property van de waarde undefined) probeert op te halen, terecht klagen met:
Kan de eigenschap parent van een niet-gedefinieerde verwijzing of een verwijzing naar een lege waarde niet ophalen
[EDIT]
Nope. Net even geverifieerd en zoals joppybt hieronder ook al terecht heeft opgemerkt; dit is inderdaad ongedefinieerd gedrag omtrend het herdefiniëren van parent en/of waar de waarde in het assignment van de nieuwe parent variable vandaan komt.

[ Voor 23% gewijzigd door R4gnax op 16-02-2015 22:08 ]


Acties:
  • 0 Henk 'm!

  • joppybt
  • Registratie: December 2002
  • Laatst online: 15-10 23:54
Het verbaast me meer dat je een variabele met de naam parent kunt de definiëren. Die variabele is namelijk al voorgedefinieerd als een verwijzing naar het omvattende frame.
Normaal gesproken wordt een verwijzing naar parent opgevat als window.parent. Als jij echter zelf ook een variabele parent gaat definiëren kom je volgens mij al aardig in de het gebied van ongedefinieerd gedrag.

Begin dus eerst maar eens met een andere variabele naam.

Acties:
  • 0 Henk 'm!

  • Vircos
  • Registratie: Januari 2008
  • Laatst online: 11-10 21:37
joppybt schreef op maandag 16 februari 2015 @ 21:49:
Het verbaast me meer dat je een variabele met de naam parent kunt de definiëren. Die variabele is namelijk al voorgedefinieerd als een verwijzing naar het omvattende frame.
Normaal gesproken wordt een verwijzing naar parent opgevat als window.parent. Als jij echter zelf ook een variabele parent gaat definiëren kom je volgens mij al aardig in de het gebied van ongedefinieerd gedrag.

Begin dus eerst maar eens met een andere variabele naam.
Dat heb ik inderdaad inmiddels ook gemerkt, echter is mijn stuk code afhankelijk van de context waarin het draait en heb ik daar niet de volledige vrijheid om daarin zaken aan te passen. Vandaar dat ik de variabele parent heb aangemaakt om daarmee de parent opnieuw te definiëren. Dit vinden firefox en chrome prima. IE dus helaas niet.

Ik heb inmiddels een workarround, maar dat betekent dat ik de context lichtelijk aanpas (wat dus eigenlijk niet de bedoeling was).