2011-07-25 2 views
2

fenêtre parent est: http://localhost:8080/webApp/index.html en cliquant sur le bouton donné, une fenêtre pop-up apparaît et je veux envoyer des données comme innerHTML de la fenêtre parent à la fenêtre pop-up. J'utilise ci-dessous fonction apparaître la fenêtre pop-upComment faire passer des données de la fenêtre Parent à la fenêtre pop-up

<script type = text/javascript> 
    window.open("popup.html", "popup",'toolbar = no, status = no beforeShow'); 
</script> 

url fenêtre pop-up est: http://localhost:8080/webApp/popup.html

Maintenant, je veux envoyer des données (innerHTML text) de fenêtre parent fenêtre pop-up et je sais qu'il peut être poster sur le serveur en utilisant AJAX puis ajouter dans la page contextuelle, mais je ne veux pas envoyer ce texte innerHTML (données) au serveur, je veux juste utiliser la fonction js pour effectuer ma tâche côté client seulement est-il possible?

server side : java, servlet 
Client Side : jQuery, javascript 
+1

Les gens détestent les pop-ups. De nombreux navigateurs et plugins suppriment automatiquement les pop-ups. Si vous pouvez faire tout ce que vous faites sans un pop-up, cela causera beaucoup moins de chagrin à long terme. – evan

Répondre

2

Essayez ceci:

parent window js : window.open("popup.html", "popup",'toolbar = no, status = no beforeShow'); 

children/pop-up window js : window.opener.document.getElementById("parent_window_id").innerHTML; 

Normalement, vous ne pouvez pas accéder à une fonction ou les données de fenêtre parent de fenêtre enfant/pop-up, sauf si vous utilisez window.opener = fenêtre parent (ce qui est référence juste parent fenêtre) et puis obtenir n'importe quel ID, fonction ou données (innerHTML)

4

pourquoi ne pas essayer simplement gestionnaire de fenêtre comme:

x = window.open("....","..","..."); 
x.document.write("bla bla bla"); 

L'idée ici est, quand on ne parle que document.write et d'autres commandes de niveau de document, il se réfère à-dire la fenêtre en cours. si nous disons document.getElementById("xxx") alors sa réalité pour la fenêtre courante comme window.document.getElementById("xxx"); Si nous voulons partir de la fenêtre pop-up alors nous devons attribuer un gestionnaire pour cette fenêtre à l'aide:

x = window.open(".....") 

et nous pouvons utiliser ce gestionnaire pour exécuter en même que dans fenêtre actuelle. au lieu de document.getElementByID utiliser x.document.getElementById

Espérons que cela aide.

+0

Je veux écrire comme ça x.document.getElementById ("pop_up_div_id"). InnerHTML = parent_window_innerHTML. –

+0

ouais bien sûr que vous pouvez le faire ... allez-y ... – KoolKabin

2

Si vous avez juste besoin de transmettre des données, vous pouvez ajouter une variable globale à votre popup en enregistrant la valeur de retour window.open puis en définissant une propriété. Si vous souhaitez manipuler le code HTML de la fenêtre contextuelle, vous pouvez créer un objet jQuery du corps de la fenêtre contextuelle.

var popup = window.open("popup.html", "popup",'toolbar = no, status = no beforeShow'); 
popup.dataFromParent = 'Some Data'; 

var $popupBody = $(popup.document.body); 
// Manipulate $popupBody just like you would any other jQuery object. 
+0

Passant des données à la pop-up comme vous le suggérez ne semble pas fonctionner dans IE10 est ce comportement attendu? – HelloW

+1

Je n'ai pas essayé ce code spécifiquement dans IE10. Je ne sais pas si ce que vous voyez devrait être attendu. Peut-être y a-t-il une sécurité supplémentaire dans IE10? – FishBasketGordo

Questions connexes