Domanda

Provo a ricaricare il mio JQGrid dopo aver fatto clic sul pulsante Chiudi nella finestra popup in IE8. Ma mi ha dato diversi errori e ora ho provato a ricaricarlo nella pagina stessa. Significa che non dalla finestra popup ma esegui una funzione (risiede nella pagina principale) dopo aver premuto il pulsante "Chiudi" nel popup. Sto ricevendo un errore - 'window.opener.document' è nullo o non un oggetto. (In ie8) Trova il mio codice qui sotto -

Funzione della finestra popup -

function closeUserPopup(){

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

}

funzione nella pagina principale per ricaricare jqgrid-

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

}

Esiste un modo per ricaricare la pagina principale JQGrid dalla finestra popup? ? (prima che si chiuda) Grazie in anticipo.

È stato utile?

Soluzione


Non è window.opener.document ma window.opener
Prova a verificare se l'apri è ancora valido prima.
Di solito faccio qualcosa di simile:

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

Un piccolo suggerimento.
Ho rinunciato a popup come questi perché sono difficili da gestire.
Tendo a usare un Finestra di dialogo dell'interfaccia utente jQuery Quindi posso gestire tutto sulla stessa pagina.

AGGIORNARE

Se stai usando window.showModalDialog(); Le cose sono ancora più semplici.
Ecco un esempio:

<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>

Dal momento che stai creando una finestra di dialogo, il processo di script client si interrompe fino alla chiusura della finestra popup. A quel punto, il tuo JavaScript riprende il controllo e può licenziare alcune altre azioni. PS: puoi usare - come ho fatto - un valore di ritorno come stato qui.

Altri suggerimenti

Probabilmente non le migliori pratiche, ma:

(function () {
    var parentLocation = window.opener.location;
    window.opener.location = parentLocation;
})();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top