作者:老王
我是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做子窗口吧,不给用户过多的选择机会。
我是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做子窗口吧,不给用户过多的选择机会。