Javascript刷新父窗口的问题

作者:老王

我是Javascript菜鸟,本文系记录今天刚遇到的问题,纯属笔记。高手可以飘过了。

问题描述:用户在父窗口中点击链接弹出一个子窗口。当关闭子窗口的时候刷新父窗口。

parent.htm:

<html>
<head>
<title>parent</title>
</head>
<body>
<a href="#" οnclick="window.open('child.htm');">open</a>
<div><script>document.write(new Date().getTime());</script></div>
</body>
</html>

child.htm:

<html>
<head>
<title>child</title>
</head>
<body>
<a href="#" οnclick="window.opener.location.reload(); window.close();">close</a>
</body>
</html>

解决方法还是很简单的。不过这里还有一些情况要考虑。

用户在关闭子窗口的时候,可能并不会通过我们提供的close链接去关闭,而是通过点击浏览器本身的关闭按钮去关闭,如果是这样的话,按照上面代码的写法,父窗口就无法自动刷新了,为了兼容这种情况,还得捕捉一下事件,做如下修改:

<body οnunlοad="window.opener.location.reload();">

可加上上面的代码之后,又会引入了一个新的问题,当用户在子窗口按F5刷新的时候,会触发onunload事件,父窗口会随之刷新。

虽然我们可以捕捉按键(进而做一些手脚):

document.onkeydown = function(event) {
    event = event || window.event;
    alert(event.keyCode);
}

但是,用户还有可能是通过鼠标点击刷新按钮的方式来刷新子窗口,这种情况是无法捕捉的。

搞来搞去,最后决定还是用 Lightbox做子窗口吧,不给用户过多的选择机会。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值