Question

J'essaie de recharger mon jqGrid après un clic sur le bouton de fermeture dans la fenêtre pop-up dans IE8. mais il m'a donné plusieurs erreurs et maintenant j'ai essayé de le recharger dans la page elle-même. ce qui signifie que pas de la fenêtre, mais exécuter une fonction (à la page principale réside) sur appuyez sur le bouton « fermer » dans le menu contextuel. Je reçois une erreur - « window.opener.document » est nulle ou non un objet (dans IE8) s'il vous plaît trouver mon code ci-dessous -.

Fonction fenêtre pop-up -

function closeUserPopup(){

//var x = window.opener.document.getElementById("myjqgrid");
//alert(x);
window.opener.document.callReload(); 
window.close();

}

fonction dans la page parente pour reload jqgrid-

function callReload(){
jq("#mygrid").trigger("reloadGrid"); 

}

est-il possible de recharger la page parent jqGrid de la fenêtre pop-up? ? (Avant qu'elle ne se ferme) Merci à l'avance.

Était-ce utile?

La solution


Ce n'est pas window.opener.document mais window.opener
Essayez de vérifier si l'ouvreur est toujours valide avant.
Je fais quelque chose comme ceci:

if ( window.opener != null)
   window.opener.callReload();
window.close(); 

Une petite suggestion.
J'ai donné avec popups comme celles-ci parce qu'ils sont difficiles à gérer.
J'ai tendance à utiliser un jQuery UI Dialog afin que je puisse gérer tout sur la même page.

UPDATE

Si vous utilisez des choses window.showModalDialog(); sont encore plus simples.
Voici un exemple:

<script type="text/javascript">
    function OpenDialog(userPopupUrl)
    {
        alert("starting!");
        var vReturnValue = window.showModalDialog(userPopupUrl,"dialogWidth:450px;dialogHeight:100­px;center:yes;resizable:no;status:no;help:no;");
        alert("I am here!");
        // You can refresh whatever you want here!!!!
    }
</script>

Puisque vous créez une boîte de dialogue du processus de script client arrête jusqu'à la fermeture de la fenêtre pop-up. À ce moment-là, votre javascript obtient le dos de contrôle et peut tirer d'autres actions. PS: Vous pouvez utiliser - comme je l'ai fait - une valeur de retour en tant qu'Etat ici .

Autres conseils

Probablement pas la meilleure pratique, mais:

(function () {
    var parentLocation = window.opener.location;
    window.opener.location = parentLocation;
})();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top