2010-07-29 6 views
1

Je développe une application iFrame Facebook. L'iFrame a un swf. Nous devons avoir accès à ce swf par javascript.Utiliser "window" et "document" dans un iFrame

Ce iFrame a un swf qui doit être placé dans une variable Javascript afin que nous puissions appeler les fonctions ExternalInterface. En ce moment, notre variable "flash" est indéfinie parce que nous ne semblons pas pouvoir accéder aux éléments de cet iFrame, car cela évoque un avertissement de sécurité sandbox, car évoquer une fenêtre ou un document signifie que nous accédons à ce contenu du site du parent, qui est Facebook.

En ce moment, nous faisons quelque chose comme:

if(navigator.appName.indexOf("Microsoft") != -1) 
{ 
    flash = window["swfr"]; 
} 
else 
{ 
    flash = document["swfr"]; 
    } 

Je suis sûr qu'il ya un moyen de faire ce travail, mais malheureusement, je ne suis pas le voir. J'apprécie toute aide.

Répondre

0
+0

Exécution des travaux autonomes d'applications - tout fonctionne comme il se doit. C'est seulement dans le contexte où la source est dans un iFrame que tout se casse, bien que je vais donner ce que Christian a suggéré un essai. –

0

La page iframe enfant a une référence au parent, et non l'inverse. Vous devriez donc pouvoir donner une référence arrière, puis l'utiliser pour manipuler votre objet flash. Ce blog montre comment appeler une fonction parent (vous passez le obj flash comme référence): http://www.velocityreviews.com/forums/t164727-a-challenge-call-parent-javascript-function-from-inside-an-iframe.html

page parent:

function ManipulateFlashObj(obj) 
{ 
alert(obj); 
} 

enfant (page iframe):

parent.ManipulateFlashObj(document.getElementById("swf")); 
+0

Donc, je ne peux pas manipuler les éléments d'un iFrame à partir de l'iFrame lui-même, je dois utiliser des références au parent pour le faire? –

0

Si la La page parente et la page iframe sont sur des domaines DNS différents, le navigateur ne permettra pas au parent de voir dans le contexte enfant ni à l'enfant de voir le contexte parent. Pour déplacer des données entre le parent et l'enfant, vous devez utiliser des techniques de script interdomaines (XSS) telles que la transmission de données sur l'URL iFrame.

0

Cela devrait fonctionner si le script se trouve dans l'IFrame, puisque l'IFrame aura le même domaine que le fichier SWF. Si, cependant, l'iframe est servi à partir d'une URL facebook, vous devrez créer/mettre à jour le fichier cross-domain.xml sur l'hôte qui sert le fichier SWF.

Également, essayez swfObject, car il est beaucoup plus compatible avec les navigateurs, et est même utilisé par Flash Builder 4 dans le modèle html généré automatiquement.

http://code.google.com/p/swfobject/

Questions connexes