我在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? ?(在它关闭之前)先谢谢。
答案 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:100px;center:yes;resizable:no;status:no;help:no;");
alert("I am here!");
// You can refresh whatever you want here!!!!
}
</script>
由于您正在创建对话框,因此客户端脚本进程将停止,直到您关闭弹出窗口。此时,您的javascript将获得控制权,并可以触发其他一些操作。 PS:您可以像我一样使用返回值作为状态here。