【问题标题】:Refresh the parent page after closing a pop up window关闭弹窗后刷新父页面
【发布时间】:2017-07-28 13:38:35
【问题描述】:

我有一个带有gridview 的aspx 页面,其中有一个更新按钮。当我单击更新按钮时,会打开一个弹出窗口。第二个 aspx 页面(弹出窗口)有一个删除按钮的字段。当我单击删除按钮时,第二个 aspx 页面关闭,并且该行从第一个 aspx 页面的 gridview 中删除。在我手动刷新页面之前,我无法看到该行已从 gridview 中删除。

如何在关闭第二个页面(弹出窗口页面)后立即刷新父页面(具有gridview的页面)?我试过了,但没有用:

Response.Write("<script>window.close();</" + "script>");
Response.Write("<script>window.opener.location.reload();</" + "script>");

【问题讨论】:

  • 编写代码而不是 URl 会有帮助。
  • 你可能想看看window.postMessage我认为这将是更好的解决方案
  • 你为什么要为弹出窗口烦恼?用户讨厌这些,弹出窗口阻止程序也是如此。只需在您的网页中打开一个模式或对话框。
  • 你可以使用window.parent.location.reload()

标签: javascript c# asp.net


【解决方案1】:

可以在弹窗中使用window.opener,添加即可

window.opener.location.reload();

onbeforeunloadonunload 事件的弹出窗口中。但这不适用于chrome,它适用于firefox。

您可以使用setInterval 来检查弹出窗口是否在主页中关闭:

var page = null;
function openPopUp() { 
    page = window.open("desiredPage.html","windowName", "width=200,height=200"); 
    setInterval(function() {
        if(page != null && page.closed) {
            window.location.reload();
        }
    }, 1000);
}

第二种解决方案适用于所有浏览器。

【讨论】:

  • 我在aspx页面中添加了这个js代码:function close() { var page = null;函数 openPopUp() { page = window.open("popupPageName.aspx","windowName"); setInterval(function () { if (page != null && page.closed) { window.location.reload() } }, 100);我做了这个 c# 代码: Response.Write("");弹出窗口关闭但关闭后不刷新父页面
  • 我对aspx不熟悉,但是你复制了我在另一个函数中提供的代码,这意味着当你执行close函数时,openPopUp不会被执行。看看jsfiddle我创建了一个简单的按钮,当你点击它时,会打开一个新的弹出窗口,按钮文本会更改为测试,当你关闭弹出窗口时,按钮会变成旧的value 这意味着页面重新加载:)
猜你喜欢
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
相关资源
最近更新 更多