2009-06-23 5 views
8

J'ai une page HTML qui ouvre une autre page via JavaScript. Quand un utilisateur clique sur un bouton dans l'autre page, je veux poster un message dans un DIV de la page d'ouverture via JQuery. Je ne peux pas mettre le doigt dessus, mais je n'arrive pas à faire fonctionner ça. Voici ma page d'ouvertureJQuery - Écrire dans la fenêtre d'ouverture

<html> 
    <head> 
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
    </head> 

    <body> 
    <input type="button" onclick="window.open('dialog.html', '_blank', 'height=200, width=300');" value="launch!" /> 
    <div id="testDiv"></div> 
    </body> 
</html> 

Lorsque l'utilisateur clique sur le "lancement!" bouton, une boîte de dialogue apparaîtra. Le code de la boîte de dialogue ressemble à ceci:

<html> 
    <head> 
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
    </head> 

    <body> 
    <input type="button" onclick="updateOpener()" value="Update Opener" /> 
    <script type="text/javascript"> 
     function updateOpener() 
     { 
     var testDiv = window.opener.jQuery("#testDiv"); 
     if (testDiv != null) { 
     alert("here"); 
     testDiv.html("Updated!"); 
     } 
     } 
    </script> 
    </body> 
</html> 

Étonnamment, la boîte d'alerte apparaît. Cependant, je ne peux pas sembler mettre à jour le HTML de la DIV dans ma page d'ouverture. Est-ce que quelqu'un sait comment faire ça?

+0

Le code ci-dessus fonctionne pour moi. –

+0

Il vient de le réparer avec son édition. – montrealist

Répondre

5

Vous référencez "confirmDiv". Où est ce DIV?

+3

C'était le problème du PO. Il a corrigé son code après cette réponse, et maintenant ça marche. – Sev

0

Hummm, ça marche pour moi dans Firefox 3.0.11, et IE8 2 ... (à savoir le bouton dialog.html met à jour le code HTML dans la page d'ouverture pour dire «Mise à jour!).

0

Bizarrement , votre exemple fonctionne bien pour Chrome, IE 8 et FireFox. Avez-vous d'autres détails?

2

Vous ne pouvez pas faire cela si la page parente (l'ouvreur) réside sur un autre domaine. Sinon, votre code fonctionne parfaitement.

De plus, votre vérification! = Null ne fonctionne probablement pas comme vous le pensez, car la fonction jQuery ne renvoie jamais de valeur nulle. Si vous vérifiez l'existence d'un élément, vous devez le faire de cette façon ...

var el = $("#myElementId"); 
if(el.length == 0) 
    alert('Not found!'); 
Questions connexes