2009-12-10 4 views
4

Comment puis-je appeler la fonction jquery parent-window avec une variable de la fenêtre popup javascript? Des exemples simples que je peux regarder?Comment puis-je appeler la fonction jquery parent-window avec variable de la fenêtre popup javascript?

+0

Quel genre de variable passez-vous? sélecteur? Chaîne html? fonction? Élément DOM (aïe)? –

+0

Est-ce que parent. $ (Quelque chose) fonctionne? On dirait que ça devrait. – stimms

+0

juste une chaîne à une fonction de fenêtre parent de popupwindow. – Kumar

Répondre

5

opener est une référence à l'objet du document window d'ouverture. C'est à dire. vous avez accès à l'espace de noms global javascript de la fenêtre d'ouverture.

par exemple.

<html> 
    <head> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script> 
    <script type="text/javascript"> 
     function foo(url) { 
     // if there is a reference to the opening window 
     if (null!=opener) { 
      // we call the function in the context of the opening window 
      opener.foo(url); 
     } 
     else { 
      // otherwise show the data 
      $('#d1').html(new Date() + " : " + url); 
     } 
     } 
    </script> 
    </head> 
    <body> 
    <div id="d1">...</div> 
    <button onclick="window.open('?');">new window</button> 
    <button onclick="foo(document.URL);">propagte url</button> 
    </body> 
</html> 

si vous appuyez sur « url se propagent » dans un (dans une) fenêtre pop-up l'appel de fonction bulle jusqu'à la première fenêtre non-popup (ayant ouvre = null). N'oubliez pas que les restrictions de sécurité (comme les contrôles inter-domaines) implémentées dans le navigateur s'appliquent.

Edit2: exemple avec history.go (0)

<html> 
    <head> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script> 
    <script type="text/javascript"> 
     function foo() { 
     var context = (null!=opener) ? opener : window; 
     context.history.go(0); 
     } 

     $(document).ready(function() { 
     $('#d1').html("document ready at "+ new Date()); 
     }); 
    </script> 
    </head> 
    <body> 
    <div id="d1">...</div> 
    <button onclick="window.open('?');">new window</button> 
    <button onclick="foo(document.URL);">...and action</button> 
    </body> 
</html> 
+0

Merci. il suffit d'ajouter "opener.history.go (0);" avant "opener.foo (url);" , maintenant ça ne marche pas (pour moi), aucune suggestion. – Kumar

+0

Oui, je modifie un peu le contenu de la fenêtre principale dans le popup, donc je veux le recharger avec le contenu édité, et j'ai utilisé history.go (0) pour restaurer la même page que précédemment. – Kumar

+0

Je pense que je pourrais avoir besoin lorsque le rechargement de la fenêtre principale se termine, afin que je puisse appeler le jquery dans la fenêtre principale. J'ai essayé avec window.parent.onload = nom_fonction; mais ça n'a pas marché. de toute autre manière? – Kumar

0
window.opener.jQuery(myVariable); 
+0

merci pour votre réponse. je pense que "myVariable" est le nom de la fonction, si je me trompe, comment passer la variable à it.If est-il variable comment appeler ma fonction? – Kumar

+0

J'imagine que window.opener. $ (MyVariable) fonctionnerait aussi. –

+0

peut-être vous avez besoin de window.opener.myFunction (someVariable) –

2

Normalement, vous définissez une fonction plugin comme ceci:

(function($) { // jquery no conflict 

$.fn.myPlugin = function(myvar){ 
    // do something 
} 

})(jQuery); 

Ensuite, utilisez ceci:

window.opener.$.fn.myPlugin(myvar); 
Questions connexes