Ricarica jqgrid dalla finestra popup ie 8
-
28-10-2019 - |
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.
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:100px;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;
})();