2009-12-09 3 views
1

Je rafraîchis la fenêtre parent à partir de la fenêtre contextuelle, puis l'appel des expressions de la fenêtre parent jquery ne fonctionne pas. Mais quand j'active l'appel d'alerte dans la fonction closePopup dans le popup.php tout fonctionne bien. - Qu'est-ce qui ne va pas avec moi?expression jquery dans la fenêtre parent ne fonctionne pas correctement à partir de la fenêtre popup - Qu'est-ce qui ne va pas?

fichier test1.html

<script type="text/javascript" src="jquerymin.js"></script> 
<script type="text/javascript"> 
var visible_status=0; 
function selectFn(sno){ 
if(sno==1){ 
    $('#id2').hide(); 
    $('#id1').show(); 
    visible_status=1; 
}else if(sno==2){ 
    $('#id2').show(); 
    $('#id1').show(); 
    visible_status=2; 
} 
} 

function popitup(url) { 
    newwindow=window.open(url+'?parent_status='+visible_status,'name','top=300,width=400,height=250'); 
    if (window.focus) {newwindow.focus();} 
     return false; 
} 
</script> 
<select name='optionw' onchange="selectFn(this.options[this.selectedIndex].value);"> 
<option value="">Select</option> 
<option value="1">Div1</option> 
<option value="2">All</option> 
</select> 
<div id='id1' style="display:none;">DIV1</div> 
<div id='id2' style="display:none;">DIV2</div> 
<button onclick="popitup('popup.php');">popUp</button><br>` 

mon fichier popup.php

<script type="text/javascript" src="jquerymin.js"></script> 
    <script type="text/javascript"> 
    var parent_status='<? echo $_GET[parent_status];?>'; 

    function closePopup() { 
     window.opener.history.go(0); 
     //alert('going to call parent selectFn('+parent_status+')'); 
     window.opener.selectFn(parent_status); 
     self.close(); 
    } 
    </script> 

...Here editing a part of the main page content... 
<input type=button value=close_popup onclick="closePopup();"> 

après la fermeture de ce pop-up i besoin,

  1. page principale pour recharger (pour afficher Édités contenu)
  2. pour restaurer l'état visible visible comme avant clic dans ce popup.
+0

Veuillez formater votre code source en l'indentant avec 4 espaces ou en cliquant sur le bouton 100100101 dans l'éditeur. –

Répondre

1

Vous devez vous assurer que le chargement du cadre parent est terminé avant d'essayer d'exécuter du code qui fonctionne sur le DOM (car le DOM n'est peut-être pas encore terminé).

JS est synchrone dans les navigateurs mais le chargement de la page ne l'est pas. La manière la plus simple de mettre en œuvre ceci est de mettre en body.onload(). IIRC, jQuery offre une fonction d'aide pour cela.

+0

@Araon Digulla où je dois utiliser body.onload() fn? – Kumar

+0

C'est la partie difficile: Vous devez l'installer dans le corps de l'image parent ... qui n'a pas encore été chargé. Pour que cela fonctionne, essayez de placer l'élément à sélectionner dans l'URL du cadre supérieur (c.-à-d. Obtenir l'URL de l'historique et attacher "? Select = ..." et traiter ce nouveau paramètre pendant onload() du haut –

+0

Je ne peux pas changer l'URL parent, bcoz, il rechargera la page principale et mettra la vue en haut de la page (la page principale est longue.), j'ai besoin de restaurer la position précédente après avoir fermé le popup , mais avec des valeurs mises à jour.) je suis nouveau à jquery - je ne peux pas trouver l'approche requise aide s'il vous plaît merci d'avance – Kumar

Questions connexes