点击右上角的叉关闭浏览器的时候会弹出一个确认退出的对话框,点取消不关闭,点确定的话会执行我相应的代码,比如重新跳转到某个页面...请问该怎么实现,我知道那个onbeforeunload方法,但是根本不能捕捉点的是确定还是取消...求救啊

解决方案 »

  1.   

    在onbeforeunload这个事件中用confirm弹出提示框
    if(confirm("确定要关闭吗?")) {
        //点“确定”执行的代码
    }else {
        //点“取消”执行的代码
    }
      

  2.   

    目前还无法通过JS执行不关闭浏览器的方法,不关闭的方法都是浏览器提供,因为浏览器可不希望JS给客户带来一个无法关闭的页面。
    所以如下代码会有点问题:
    你点确定,执行程序,然后关闭页面
    你点取消,浏览器会再次弹出提示,是否关闭页面
    window.onbeforeunload=function(){
       if(confirm("确定要关闭吗?")) {
         alert("你好!")
    }else {
       return "您确定离开?";
    }
    或者说,浏览器给出的提示,JS是无法获取用户选择的。(如果用户点确定,页面立刻关闭,无法再执行任何JS;如果用户点取消,JS也无任何监听可知。
      

  3.   

    当然换一个思路,也许可以变向实现。
    根据事件的顺序,是先执行 onbeforeunload 。如果用户选择关闭 再执行 onunload。所以如下写法可能可以变向实现你要的效果。window.onbeforeunload=function(){
       return "您确定要关闭吗?";
    }
    window.onunload=function(){
     window.open("http://www.baidu.com")
    }
      

  4.   

    我要关闭 页面  你还给我打开个新页面
    就是就是,这属于强奸用户意志的行为,是流氓行为。一切违背用户意愿的需求设计都是耍流氓,是需要改正的需求。onbeforeunload中return一个字符串已经可以达到提醒用户的功能,用户既然点击了离开,就是执意要离开,程序非得再open一个新窗口,只会让用户更讨厌。合理的onbeforeunload的使用场所是,比如你在写一封邮件,并且没有保存,不小心叉掉了标签页,onbeforeunload可以很友善的提醒用户:“亲,邮件没保存呢还”。如果用户执意要离开,那就随他去吧。