javascript - Jquery退出弹出窗口困惑

标签 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) exit popup displays with yes or no to leave

4) yes = 关闭页面,no = 留在当前页面

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

谢谢。

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

最佳答案

尝试像这样一起使用 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 和 onunload 设置为 null,就像我在我的示例中所做的那样。

上一个答案:

当你重定向时,你能在散列中放置某种标志吗?所以不要发送到 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。如果您要重定向到您无法控制的其他网站,除了尝试弹出一个窗口(很可能会被现代浏览器阻止)之外,我看不出如何做到这一点

关于javascript - Jquery退出弹出窗口困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205532/

相关文章:

jQuery。获取标签+类名

jsf - 是否可以在离开带有JSF或PrimeFaces的页面时调用方法?

javascript - 如何在 Vertx 中读取命令行参数

javascript - jQuery 每个 : run through each set of a li individually

jquery - 宽度自动不更新与挖空文本绑定(bind)

Javascript onclose 事件

JavaScript - 在选项卡关闭时发送 AJAX 调用(删除请求)

javascript - 需要非常非常快地将 Canvas 的内容设置为图像

javascript - 编辑数组元素并将字母大写

javascript - JQuery Compat Edge 的折旧版本是否意味着此代码将无法运行?