2009-11-16 5 views
2

Comment puis-je utiliser JavaScript/jQuery pour remplir une fenêtre contextuelle avec des données provenant de variables JS dans la page parente?Comment ouvrir popup et le peupler avec des données de la fenêtre parent?

Dans mon exemple, j'ai un tableau de noms de fichiers. Je liste au plus cinq dans la fenêtre parent et s'il y a plus je veux fournir un lien qui ouvre une fenêtre de popup et énumère chaque publication dans le tableau. Donc, si j'ouvre un popup contenant un <ul id="all_files"></ul>, comment ajouter <li> -items à cette liste?

+0

sont les noms de fichiers déjà disponibles dans la fenêtre parent? Si non, comment obtenez-vous les 5 premiers noms? – TheVillageIdiot

+0

Oui, ils sont collectés avec Ajax et stockés dans un tableau dans la fenêtre parente. – Christoffer

Répondre

3

Parent fenêtre:

<span id="popup"> Click to Open Popup </span> 

<script type="text/javascript"> 
var ar=new Array("Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", 
       "Item 7", "Item 8", "Item 9", "Item 10"); 
function getArray(){ 
    return ar; 
} 
$(document).ready(function(){ 
    $("span#popup").click(function(){ 
     var p=window.open("Popup.html"); 
    }); 
}); 
</script> 

fenêtre pop-up:

<ul id="list"></ul> 
<script type="text/javascript"> 
    if(window.opener && !window.opener.closed){ 
     var ar= window.opener.getArray(); 
     var items=""; 
     for(var i=0;i<ar.length;i++){ 
      items +="<li>" + ar[i] + "</li>"; 
     } 
     $("ul#list").html(items); 
    } 
</script> 
+0

Arrête l'exécution de ar ar = window.opener.getArray(); et les sorties de la console Firefox: "Erreur: window.opener.getArray n'est pas une fonction". Même s'il existe et n'est pas mal orthographié. – Christoffer

+0

incidemment je l'ai testé dans Firefox 3.5.x avec firebug! – TheVillageIdiot

+0

Désolé, c'était mon mauvais ... En fait, cette fonction est appelée à partir d'un Iframe et je croyais que ce cadre agirait comme parent ... mais c'était faux. Donc, pour accéder à la fonction JS de l'Iframe, on peut faire ceci: window.opener.window.frames.THIS_FRAME.getFiles(); où le nom AND id de l'Iframe est "THIS_FRAME". – Christoffer

Questions connexes