我想只在用户关闭浏览器窗口时显示弹出窗口。但是,在以下代码中。刷新页面时显示弹出窗口。
我的代码
<script type="text/javascript">
$(document).ready(function()
{
var key = true;
$(window).bind('beforeunload', function(e){
if(key)
return confirm("Do you really want to close? This will log you out of your profile.");
e.preventDefault()
});
$(document).on("click","a",function() {
key=false;
});
});
</script>
答案 0 :(得分:1)
这基本上就是你所需要的。
来源:open a custom popup on browser window/tab close
JSFiddle:http://jsfiddle.net/SQAmG/5/
var popit = true;
window.onbeforeunload = function() {
if(popit == true) {
popit = false;
return "Are you sure you want to leave?";
}
}
修改强>
使用HTML5 Web Storage模拟浏览器中的会话。在这里,您可能希望使用sessionStorage而不是localStorage,以便在浏览器窗口完全关闭时会话结束。
如果设置了sessionStorage变量,请不要启动弹出窗口,否则允许弹出代码执行。
HTML5网络存储:http://www.w3schools.com/html/html5_webstorage.asp
答案 1 :(得分:1)
如果设置onbeforeunload
回调,则每次关闭选项卡或刷新页面时都会执行回调。所以,让我们进入一些黑客攻击。当我们关闭标签时,窗口会失去焦点。所以在onbeforeunload
内,我们将检查窗口是否具有焦点。如果有,则刷新页面。如果它失去了焦点,可能你已经关闭了标签。
window.onbeforeunload=function(){
if(!document.hasfocus()){
//show popup
}
}