在子页面关闭时刷新父页面的问题,用到了弹窗控件

wyumening 2012-03-30 03:12:48
情况是这样的,a页面有个iframe ,这个iframe的src属性指向的是b页面,b页面有个按钮,单击它,弹出了页面c,用的是lhgdialog弹窗控件,调用方法如下:

$.dialog({ id: 'test1', title: '添加注册信息',width: 480, height: 186, content: 'url:c.asp?lsreg=<%=request.QueryString("lsreg")%>', nofoot: true,skin:'skyblue'});

现在要实现的效果是点击c页面的右上角的红叉关闭时如何刷新调用弹窗控件的页面,即b页面,注意不是a页面!

写的代码如下

c.asp页面: <body <%if request.QueryString("action")="close" then response.Write("onbeforeunload='closreload()'") end if%>> 然后是js 代码

function closreload()
{
//self.window.opener.locaction.reload();
// window.location .href=window.parent;
//parent.location.reload(); 刷新了a页面,而a的iframe属性默认的src指向的并不是b页面,所以无效
window.opener.location.href=window.opener.location.href;
//var win = top.window;
//if(win.opener) win.opener.location.reload();



}



上面的几行代码,我都试过了,可是都不见效,大家帮帮忙啊!
...全文
292 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainVSjava 2012-03-30
  • 打赏
  • 举报
回复
window.opener.document.getElementById("iframe").reload();iframe为框架Id
还在加载中灬 2012-03-30
  • 打赏
  • 举报
回复
我刚的回答被删了?

其实隐藏和关闭,在你要刷新的这个内窗体里是无差别的效果了

新写的close()会覆盖原来的

因此原来的会失效

解决办法:

先不用我原先的替换代码

用以下的方法


var odialog=$.dialog({...]);
var odialogclose=odialog.close;
odialog.close=function(){
odialogclose.call(this);
window.location.href=window.location.href;
return false;
}
还在加载中灬 2012-03-30
  • 打赏
  • 举报
回复
隐不隐藏无所谓

反正你不是要刷新本窗口了嘛?

还有,那个写了会覆盖原来的close()...

所以原来的没反应
wyumening 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ky_min 的回复:]
调用的代码替换成下面试试

JScript code


$.dialog({ id: 'test1', title: '添加注册信息',width: 480, height: 186, content: 'url:c.asp?lsreg=<%=request.QueryString("lsreg")%>', nofoot: true,skin:'skyblue',close: func……
[/Quote]


这样写确实可以,不过这样只能在点击右上角的红叉时隐藏那个弹出的窗口,我试着把this.hide()改成了this.close()发现点击红叉时无反应,可我看的那个控件的api好像有close方法,这是怎么回事?
Acesidonu 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
如果弹窗控件不是用的弹出窗口,只是弹出的div 然后链接内容用的ajax获取的,那么你要刷新的其实就是本窗口了


//self.locaction.reload();
[/Quote]
这个可行
Acesidonu 2012-03-30
  • 打赏
  • 举报
回复
这个是弹层不是弹窗
parent.document.getElementById('bId').src = 'bsrc';

parent.frames['bname'].reload();
试试
wzhiyuan 2012-03-30
  • 打赏
  • 举报
回复
如果弹窗控件不是用的弹出窗口,只是弹出的div 然后链接内容用的ajax获取的,那么你要刷新的其实就是本窗口了


//self.locaction.reload();
wyumening 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
如果弹窗按件是用open打开的新窗口,用
//self.window.opener.locaction.reload();这个应该可以的
[/Quote]

应该不是用的open,这句我试了,没反应
还在加载中灬 2012-03-30
  • 打赏
  • 举报
回复
调用的代码替换成下面试试

$.dialog({ id: 'test1', title: '添加注册信息',width: 480, height: 186, content: 'url:c.asp?lsreg=<%=request.QueryString("lsreg")%>', nofoot: true,skin:'skyblue',close: function () {this.hide();window.location.href=window.location.href;return false;}});
wzhiyuan 2012-03-30
  • 打赏
  • 举报
回复
如果弹窗按件是用open打开的新窗口,用
//self.window.opener.locaction.reload();这个应该可以的

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧