从窗口弹出IE 8重新加载jqgrid

时间:2011-03-21 22:05:58

标签: javascript jqgrid ie8-compatibility-mode

我在IE8的弹出窗口中单击关闭按钮后尝试重新加载我的jqgrid。但它给了我几个错误,现在我试图在页面本身重新加载它。这意味着不是从弹出窗口中按下弹出窗口中的“关闭”按钮而是运行一个功能(驻留在主页面中)。 我收到错误 - 'window.opener.document'为null或不是对象。(在IE8中)请在下面找到我的代码 -

弹出窗口功能 -

function closeUserPopup(){

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

}

在父页面中运行以重新加载jqgrid-

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

}

有没有办法从弹出窗口重新加载父页面jqgrid? ?(在它关闭之前)先谢谢。

2 个答案:

答案 0 :(得分:0)

可能不是最佳做法,但是:

(function () {
    var parentLocation = window.opener.location;
    window.opener.location = parentLocation;
})();

答案 1 :(得分:0)


它不是window.opener.document而是window.opener
尝试检查开启者是否仍然有效。
我通常做这样的事情:

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

一点建议。
我已经放弃了像这样的弹出窗口,因为它们难以管理 我倾向于使用jQuery UI Dialog,因此我可以在同一页面上管理所有内容。

<强>更新

如果你正在使用window.showModalDialog();,事情会变得更加简单 这是一个例子:

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

由于您正在创建对话框,因此客户端脚本进程将停止,直到您关闭弹出窗口。此时,您的javascript将获得控制权,并可以触发其他一些操作。 PS:您可以像我一样使用返回值作为状态here