2016-03-07 52 views
1

我想在用户离开选项卡之前通知用户保存更改(仅当他们没有单击保存按钮时)。我发现了很多关于脏页面,jquery,onbeforeunload等的示例,但是每个示例都会在用户离开页面之前通知用户,因为我想在他们更改或移动到同一页面导航栏中的其他选项卡之前通知他们。请帮我出来通知用户在更改选项卡时保存更改

+0

这是不可能的。当用户在活动标签之间切换时,Javascript不会收到任何事件。 –

+0

为您的页面上的选项卡提供点击/焦点处理程序。点击/聚焦时,检查数据是否被保存,当一个选项卡不等于他们当前所在的选项卡时。如果您在讨论用户何时切换浏览器选项卡,$(window).on(“blur”,function(){alert(“您为什么要离开?”);});会在用户尝试切换浏览器标签时提醒用户 – mhodges

+0

可能定义了一个在用户保存时变为true的变量,以及每次点击新标签时检查变量值的函数。你只需要小心地重新设置它,或者每个标签都有一个单独的变量(但是你可能仍然希望重置,因为它们可能会在同一个会话中导航回该标签并添加更多信息 - 而且你不会“不想已被保存了它的旧值在这种情况下仍然存在) – HolyMoly

回答

0

很基本,也可能不符合你的需求,但它的可能实现。

该方法只检测windowblurfocus事件。另外,它还会在窗口外点击时触发警报。不幸的是,您可能会尽可能接近检测标签更改。

$(window).focus(function() { 
    //They are staying on the page 
    console.log("You've chocen to stay") 
}); 

$(window).blur(function() { 
    //They're leaving the tab 
    alert("Sure you don't want to stay?"); 
}); 

Working Demo

+0

$ scope。$ on('$ destroy',function(){ \t \t window.onbeforeunload = undefined; \t}); \t $范围。在$( '$ locationChangeStart',函数(事件,接下来,电流){ \t \t如果($ scope.needToConfirm ==真){ \t \t \t如果(确认(“你忘了保存!!“)){ \t \t \t \t事件。的preventDefault(); \t \t \t} \t \t} \t});这对我来说Thanq都有效 – Meena

相关问题