window.onbeforeunload仅在刷新页面后才有效

时间:2015-11-04 20:17:19

标签: javascript onbeforeunload

注意:我看到这个Question,但问题不一样。

我有一个名为login_check.cfm的页面,此页面对home.cfm执行location.href

在home.cfm中我有这个代码

<script>
window.onbeforeunload = function() { window.history.go(0); };
</script>

<script>
window.onbeforeunload = function() { window.history.forward(1); };
</script>

我的意图是禁止用户使用后退按钮,以及它的工作,但只做一次刷新或使用链接做刷新。 问题是我的页面是90%基于ajax,用户点击后退按钮时返回登录页面最多。

使用Document ready()没有区别。

建议?

1 个答案:

答案 0 :(得分:0)

我发现这个旧的Question,其中rohit416给了一个好的answer,但它仍然可以使用

(function ($, global) {

    var _hash = "!",
    noBackPlease = function () {
        global.location.href += "#";

        setTimeout(function () {
            global.location.href += "!";
        }, 50);
    };

    global.setInterval(function () {
        if (global.location.hash != _hash) {
            global.location.hash = _hash;
        }
    }, 100);

    global.onload = function () {
        noBackPlease();

        // disables backspace on page except on input fields and textarea.
        $(document.body).keydown(function (e) {
            var elm = e.target.nodeName.toLowerCase();
            if (e.which == 8 && elm !== 'input' && elm  !== 'textarea') {
                e.preventDefault();
            }
            // stopping event bubbling up the DOM tree..
            e.stopPropagation();
        });
    }

})(jQuery, window);