Jquery退出弹出混乱

时间:2014-01-18 14:39:56

标签: javascript jquery window.onunload

我有以下代码

<script type="text/javascript">
function PopIt() { return 'Are you sure you want to leave?'; }
function UnPopIt() { /* nothing to return */ }

$(document).ready(function() {
window.onbeforeunload = PopIt;
$('a').click(function(){ window.onbeforeunload = UnPopIt; });
});
</script>

此脚本有效。但是我如何改变它以使它像这样工作;

1)用户按退出标签/页

2)页面更改为我选择的一个

3)退出弹出窗口显示是或否离开

4)是=关闭页面,否=停留在当前页面

我希望在弹出窗口显示之前更改页面

感谢。

注意:我确实可以控制页面,我希望重定向到同一文件夹中的另一个.php。

1 个答案:

答案 0 :(得分:2)

尝试同时使用onbeforeunload和onunload ......

    function PopIt() { 
        return 'Are you sure you want to leave?';
    }
    function UnloadIt() {
        window.opener.nowDoThisOpener("pass this variable along too");
    }

    $(document).ready(function() {
        //set the function defining what should be done BEFORE unloading
        window.onbeforeunload = PopIt;
        //set the function defining what should be done ON unloading
        window.onunload = UnloadIt;
        //set all links to disable both of these on click
        $('a').click(function(){ 
            window.onbeforeunload = null;
            window.onunload=null;
        });
    });

请注意,nowDoThisOpener是一个您可以在父页面上定义(显然可以调用任何内容)的函数。而且,就像我建议的那样,你也可以传递信息。

此外,在您的示例中,您设置了一个空函数UnPopIt来取消onbeforeunload。这是不必要的,您可以将onbeforeunload设置为null,以及onunload,就像我在我的示例中所做的那样。

上一个答案:

重定向时,你可以在哈希中放置某种标志吗?因此,不要发送到http://www.pageofmy.com/choice.php,而是发送给http://www.pageofmy.com/choice.php#1

然后在choice.php上你可以......

<script>
if (location.hash=="#1") {
   //show alert
}

</script>

这假设您可以控制pageofmy.com/choice.php。如果您正在重定向到其他一些您无法控制的网站,除了尝试弹出一个窗口(很可能被现代浏览器阻止)之外,我看不出你怎么做到这一点

相关问题