[js] Funtie in parent vanuit iframe aanroepen

Pagina: 1
Acties:

  • RickvanHaas
  • Registratie: Oktober 2004
  • Laatst online: 15-05-2024
Ik heb een iframe met daarin een link naar een functie in de parent. Om het even simpel te houden dit voorbeeld:

Iframe
HTML:
1
<a href="javascript:parent.blaat()">Blaat</a>


Parent
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
<head>
<script  type="text/javascript">
function blaat() {
    alert('blaat');
}
</script>
</head>

<body>
<iframe src="iframe.htm"></iframe>
</body>
</html>


De Firefox foutmelder geeft:
Fout: uncaught exception: Geen toestemming om eigenschap Window.blaat te lezen

Iemand enig idee hoe dit te verhelpen is?

  • Little Penguin
  • Registratie: September 2000
  • Laatst online: 08-06 20:43
Je definieert de functie als "Blaat", maar roept 'm aan met 'blaat'. JavaScript is case sensitive, dus moet je er altijd voor zorgen dat de aanroep indentiek is (qua hoofd/kleine letters) aan de definitie.

Of te wel: parent.Blaat(); ipv parent.blaat();

Edit: Verder moeten de iframe en de parent vanaf dezelfde server gehost worden anders krijg je te maken met de beperkingen om XSS (Cross site scripting) te voorkomen...

[ Voor 25% gewijzigd door Little Penguin op 14-07-2007 11:40 ]


  • RickvanHaas
  • Registratie: Oktober 2004
  • Laatst online: 15-05-2024
Sorry, in dit voorbeeld kloppen de hoofdletters niet, in mijn script wel. Ik houd dezelfde foutmelding. Overigens staan beide op dezelfde server.

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Bij mij werkt het gewoon in IE7 en FF2

Fat Pizza's pizza, they are big and they are cheezy


  • RickvanHaas
  • Registratie: Oktober 2004
  • Laatst online: 15-05-2024
Het probleem is al boven water: ik gebruik mn .htaccess om een subdomein als url te gebruiken. Als ik via de echte url de pagina opvraag is er niets aan de hand.

Thnx

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

Als het gaat om een subdomain dan zou je in beide pagina's dit kunnen toevoegen:
JavaScript:
1
document.domain = 'domain.com';

Intentionally left blank


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

crisp schreef op zaterdag 14 juli 2007 @ 14:41:
Als het gaat om een subdomain dan zou je in beide pagina's dit kunnen toevoegen:
JavaScript:
1
document.domain = 'domain.com';
Dat mag je zomaar aanpassen? Je mag dus faken dat je in een bepaald domein zit?

Klinkt eng bij onverantwoord gebruik... (XSS ofzo)

Fat Pizza's pizza, they are big and they are cheezy


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

JKVA schreef op zaterdag 14 juli 2007 @ 14:43:
[...]

Dat mag je zomaar aanpassen? Je mag dus faken dat je in een bepaald domein zit?
Nee, je kan de cross-domain restricties van een subdomain elevaten naar het hoofddomein, maar niet naar een andere domein.

Intentionally left blank


  • RickvanHaas
  • Registratie: Oktober 2004
  • Laatst online: 15-05-2024
Dat werkt inderdaad! Dank je!
Pagina: 1