仅在关闭标签/窗口时弹出确认框

时间:2014-12-10 07:03:04

标签: javascript php jquery

你好我只需要在关闭浏览器/标签时弹出确认消息,而不是在点击任何链接时。在我的代码中,当我关闭浏览器/标签以及点击任何我不想要的链接时,它会弹出消息。我真的不知道该怎么做。谁能帮帮我吗。 我的代码是 -

<body>
    <div id="copyright">
    <div class="moduletable copyright ">


<div class="custom copyright">
    <p>
<span class="copy">© Copyright 2008</span>
 Inc. All rights reserved. </p>
</div>
    </div>
  </div>
</div>
    </div>
        <br class="clear" />
  </div>
</div>
<script language="JavaScript">
window.onbeforeunload = bunload;
function bunload(){
dontleave="Are you sure you want to leave?";
return dontleave;
}
</script>
</body>
</html>

4 个答案:

答案 0 :(得分:2)

试试这个: -

 <body>
    <a href="demo-1" onclick="prevent()">click here</a>
    <script language="JavaScript">

        window.onbeforeunload = function () {
            return "Are you sure?";
        }
        function prevent() {
            window.onbeforeunload = function () { };
        };

    </script>
</body>

答案 1 :(得分:1)

您说的事件onbeforeunload效果很好。

window.onbeforeunload = function(e) {
  return 'Dialog text here.';
};

See it in action.

答案 2 :(得分:0)

TL /博士

下面的代码将完全是伪代码,描述了您需要运行的方法才能使其正常工作。


第一步是你需要为所有&#34;内部&#34;添加一个标识符。您网站中的链接。例如,如果您的页面是联系人,并且主页上有指向该页面的链接,则需要区分页面类型。

function confirmExit() {
    if (!internal_link) {
        // random shit..
        return message
    }
}
var key = "internal_link";
window[key] = false;
var message = "Your custom message. Are you sure you want to blah?";
window.onbeforeunload = confirmExit;
internal_link = false;
$(document).ready(function () {
    if (!window.location.origin) {
        window.location.origin = window.location.protocol + "//" + window.location.hostname
    }

    $("a").each(function () {
        if ($(this)[0].href.indexOf(window.location.origin) == 0) {
            if ($(this).attr("onclick") == "undefined") {
                $(this).attr("onclick", key + " = true")
            } else {
                if ($(this).attr("onclick")) {
                    var e = $(this).attr("onclick");
                    $(this).attr("onclick", e + " " + key + " = true")
                } else {
                    $(this).attr("onclick", key + " = true")
                }
            }
        } else {
            if ($(this).attr("onclick") !== key + " = true" || $(this).attr("onclick") == "undefined") {
                $(this).attr("onclick", key + " = false")
            }
        }
    });

});

以上是我之前使用过的,它完美无缺。基本上它的作用是为内部链接(站点中的链接)添加属性,然后当用户浏览您的站点时,onbeforeunload运行confirmExit()函数并检查internal_link是否为false,如果是,则显示消息,否则它将导航通过该站点。

答案 3 :(得分:0)

对我来说没有任何作用,但是我使用了上述代码和其他论坛的一些组合。

<script language="JavaScript">

        window.onbeforeunload = function () {
            return "Are you sure?";
        };

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

您提交表单时也会触发onbeforeunload事件,因此我们需要阻止该事件。