2010-06-18 5 views
6

Cela semble très simple, mais comment puis-je appeler une fonction javascript qui est définie dans le HTML de haut niveau, à partir d'un cadre enfant?comment appeler une fonction javascript dans le cadre supérieur?

top html doc 
- 1st level frame 
    - 2nd level frame 

mon document html supérieur a une fonction appelée testFn(). Dans le cadre de 2ème niveau j'ai un bouton avec onclick="top.testFn();" mais cela n'appelle pas le testFn(). Dans Firebug si j'utilise une montre pour exécuter top.testFn(); il est dit TypeError: testFn() n'est pas une fonction.

Tout cela devrait-il fonctionner - dans ce cas, il y a un problème avec mes documents ou existe-t-il un autre moyen d'appeler des fonctions dans la fenêtre de niveau supérieur?

+0

Tous les documents sont-ils impliqués sur le même domaine et le même protocole? –

Répondre

4

Votre code semble bon. Si cela dit testFn() is not a function alors peut-être que ce n'est pas le cas. Avez-vous essayé de définir onload="testFn();" dans le <BODY> de votre cadre supérieur pour vous assurer que cela fonctionne?

Il se peut qu'il y ait une erreur de type javascript qui mène au code créant votre fonction testFn qui n'est pas terminée avec succès.

2

Avez-vous essayé de l'appeler comme ceci:

onclick="parent.parent.testFn();"

Je suppose que vous avez le 2ème cadre à l'intérieur du 1er cadre.

+0

Merci - s'avère que c'était juste une erreur ailleurs sur la page. – Rory

0

En fait, c'est exactement ce que vous faites.

L'astuce est de ne pas avoir une erreur de syntaxe ailleurs dans le javascript sur cette page html haut niveau :-)

Questions connexes