Pregunta

Intento volver a cargar mi JQGrid después de hacer clic en el botón Cerrar en la ventana emergente en IE8. Pero me dio varios errores y ahora intenté recargarlo en la página misma. lo que significa que no desde la ventana emergente, sino que ejecuta una función (reside en la página principal) al presionar el botón 'Cerrar' en la ventana emergente. Estoy recibiendo un error: 'Window.opener.document' es nulo o no un objeto. (En IE8), encuentre mi código a continuación -

Función de ventana emergente -

function closeUserPopup(){

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

}

función en la página principal para recargar jqgrid-

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

}

¿Hay alguna forma de recargar la página principal JQGrid desde la ventana emergente? ? (Antes de que se cierre) Gracias de antemano.

¿Fue útil?

Solución


No es window.opener.document pero window.opener
Intente verificar si el abridor aún es válido antes.
Normalmente hago algo como esto:

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

Una pequeña sugerencia.
He renunciado a ventanas emergentes como estas porque son difíciles de manejar.
Tiendo a usar un diálogo jQuery ui Para que pueda administrar todo en la misma página.

ACTUALIZAR

Si estás usando window.showModalDialog(); Las cosas son aún más simples.
Aquí hay un ejemplo:

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

Dado que está creando un cuadro de diálogo, el proceso de script cliente se detiene hasta que cierre la ventana emergente. En ese momento, su JavaScript recupera el control y puede disparar otras acciones. PD: Puedes usar, como lo hice yo, un valor de retorno como estado aquí.

Otros consejos

Probablemente no sea la mejor práctica, pero:

(function () {
    var parentLocation = window.opener.location;
    window.opener.location = parentLocation;
})();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top