当用户关闭一个(弹出)窗口时调用一些JavaScript
当用户关闭一个窗口时可以调用一些JS吗?当用户关闭一个(弹出)窗口时调用一些JavaScript
我搜索了JS事件处理程序,发现只有onunload,每当用户离开页面时调用脚本,不一定关闭窗口。
预期的用途是调用一个AJAX脚本,该脚本会取消与弹出窗口相关的几个会话。实现这一目标有没有更好的方法?
我发现this DevShed thread其中声明这可以通过JS,但它不能解释如何调用脚本。
不幸的是,大多数谷歌搜索这个解决方案带来了window.close,这实际上与我所需要的相反!
下面的代码在Firefox,IE 8,和“Google Chrome”。
在打开的窗口中
<script src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js"></script>
<script>
function on_popup_close(){
//put your code here
alert('it closed');
}
</script>
在弹出
<script>
function inform_parent(){
opener.on_popup_close();
}
window.onbeforeunload = inform_parent;
</script>
在第一行代码用于打开的窗口中可以将自己喜欢的框架,实现了美元符号运算符。
您可以从父窗口检查子窗口仍然存在如果不是(例如检查每100毫秒左右),并启动脚本...
你可能要检查的弹出网页的网址为好,看他们是否从导航您的网域/应用的路程。 – Ian 2009-08-26 10:55:10
不知道它是否工作在实践中,但如果问题是导航到内部网页,为什么不设置一些类型,只要点击一个链接页面的全局变量,并检查该onunload的?
喜欢的东西(原谅jQuery的,我非常懒惰):
INTERNAL_CLICKED = false;
$("a").click(function() {
INTERNAL_CLICKED = true;
});
window.onunload = function() {
if(!INTERNAL_CLICKED) {
// perform window unload code
}
}
要重申,没有经过充分测试,但谁知道 - 它很可能只是为你工作。虽然,我会小心,这可能会刷新刷新。
嗨您可以使用onbeforeunload
事件下面的函数由window
解雇只是window.close
window.onbeforeunload = function() {
// stuff do do before the window is unloaded here.
}
之前让我知道,如果不解决乌尔万阿英,蒋达清
欣赏您创建的演示脚本,但它仍然遇到原始问题 - 在弹出窗口中的页面之间导航时,通知父窗口弹出窗口已关闭,但情况并非如此。 – bcmcfc 2009-08-31 11:26:53
上面的脚本src部分不需要它的工作。但无论如何感谢您的答案。 – 2012-10-20 15:19:49