2012-07-28 38 views
0

我有一个场景,如果用户尝试关闭当前浏览器窗口,则应显示一个确认框。如果他确认关闭窗口,那么此窗口应该关闭并用不同的URL打开新窗口。如果用户确认关闭当前窗口,请在当前窗口关闭时打开一个新的浏览器窗口

我试过使用下面的代码,我可以显示确认框,但我无法弄清楚如何在用户确认关闭当前窗口时打开新窗口。

var preventUnloadPrompt;    
$('a').live('click', function() { preventUnloadPrompt = true; }); 
$('form').live('submit', function() { preventUnloadPrompt = true; }); 
$(window).bind("beforeunload", function() { 
    if (preventUnloadPrompt) 
    { return; } 
    else { 
     return confirm("quit??");    
    } 
}); 

任何类型的帮助表示赞赏。 谢谢。

+0

这是不可能 – Esailija 2012-07-28 15:52:53

+0

理论上应该可以使用'window.open',但这不是一个好主意,因为大多数浏览器可能会阻止在'unload'事件中调用'window.open'。你需要做什么?当然,如果用户试图关闭标签,那么他们想要离开该网站,而不是打开一个新的标签......? – ClarkeyBoy 2012-07-28 15:54:21

+0

实际上有一组问题被逐个问到用户。如果用户关闭了此窗口,我想在某个不同的页面上执行代码,以此来标记此用户尝试了一组问题,从而阻止他再次尝试这个问题。通常情况下,这发生在用户完成所有问题时。 – 2012-07-28 16:00:31

回答

1

当窗口关闭,应有尽有,绝对与窗口是否可见或不相关的一切... javascript代码,屏幕上的东西,等未决消失,并且包含非常的脚本,在中间执行 - poof - 去了nada,基本上取消,中止,停止,停止任何正在运行的脚本。

时间排序要求,除了关闭一个窗口,所有其他用户启动的操作首先完成。

例如:

javascript: 
void(window.open("data:text/html, 
<html> 
<a href=\"javascript:window.open('about:blank');self.close();void(0);\">open & close</a> this link does both<br/> 
<a href=\"javascript:self.close();window.open('about:blank');void(0);\">close & open</a> this does close but open fails 
</html> 
")) 

的链路具有与if(confirm("quit??")){ ... }

与测试进行预处理:

window.navigator.userAgent = 
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0 

书签:
Open a new browser window on close of current window if user confirms to close current window

-1
var answer = confirm("quit??"); 
if (answer){ 
    window.open("http://www.google.com/"); 
} 
else{ 
// do something else 
} 
+0

让我知道它是否有效 – 2012-07-28 16:00:25

+0

“答案”应该是你推荐的作为工作解决方案的东西。对于其他所有内容,都有一个“评论”部分,您可以在其中提出更多问题或试用 – YePhIcK 2012-07-28 16:05:19

+0

否。无论如何感谢您的答复。 我认为确认不适用于beforeunload。我注意到, 返回确认(“退出??”); 是不正确的。它不是导致确认框的那个。 如果我写回归“退出”确认框显示Quit?在第一行,然后它有字符串说你确定要离开这个页面?和两个按钮保持在此页面上并离开此页面。 – 2012-07-28 16:18:32

相关问题