2010-11-09 5 views

Répondre

0

avez-vous essayé?

top.frames['my_frame'].myFunc(); 
+0

ce n'est pas jquery ..... – fgfgfgghjh

+2

C'est javascript, vous n'avez pas besoin de jquery –

0

Vous pouvez sélectionner l'iFrame en utilisant son identifiant

document.getElementById(iframeId).contentDocument 

mais je ne suis pas sûr que vous pouvez accéder à son JavaScript, surtout si l'enfant iFrame est de domaine différent

14

Tant que le La page encadrée se trouve sur le même domaine (ou sur un sous-domaine et vous définissez document.domain). Vous devez accéder à la propriété contentWindow de l'élément frame. Par exemple:

$("#myFrame")[0].contentWindow.myFunction(); 

// or, if jQuery hasn't made you lazy 
document.getElementById("myFrame").contentWindow.myFunction(); 

La plupart des navigateurs prennent en charge également contentDocument, mais Internet Explorer ne fonctionne pas. Si votre page encadrée est sur un domaine différent, vous obtiendrez une erreur Accès refusé.

+0

Je suggérerais que l'équivalent non-paresseux serait * vraiment * if (document.getElementById ("myFrame"). Length == 0) {document.getElementById (" myFrame "). contentWindow.myFunction(); }; ' –

+0

@Jeromy: non, les deux versions lanceraient la même erreur si' # myFrame' n'existait pas dans la même page. –

+0

Je vois ce que vous voulez dire ... '$ (" # myFrame ") [0]' retourne 'undefined', ce qui bien sûr n'a pas de méthodes. Je pensais '$ (" # myFrame ") ...', mais ce n'est pas comme ça que ça fonctionne. Merci de m'avoir mis sur le bon chemin. –

3
$("iframe").each(function() 
{ 
    $(this).one("load", function() 
    { 
     $(this)[0].contentWindow.myFunction(); 
    }); 
}); 

Il faut iframe chargé;)

1

le faire comme un pro:

$("#myFrame").prop('contentWindow').abc(); 
0

le faire comme un pro:

$("#myFrame").prop('contentWindow').abc(); 
+0

J'ai essayé de le faire comme un pro ... fonctionne sur localhost mais pas sur un serveur de production - Erreur = TypeError: $ (...). Prop (...) est indéfini –

+0

même exact configuration à la fois localhost et production? – hackdotslashdotkill

Questions connexes