有没有一种方法可以防止浏览器在鼠标点击时刷新页面?

3

我已经通过清除历史记录和可能的按键事件来防止浏览器的后退按钮,但我唯一需要的是防止鼠标点击浏览器的刷新按钮。有人能帮我吗?

history.pushState("", "");
window.addEventListener('popstate', function(event) {
    history.pushState("", "");
});
$(function() {
    document.onkeydown = function(event) {
        switch (event.keyCode) {
            case 116: //F5 button
                event.returnValue = false;
                event.keyCode = 0;
                return false;
            case 82: //R button
                if (event.ctrlKey) {
                    event.returnValue = false;
                    event.keyCode = 0;
                    return false;
                }
        }
    }
});

1
如果我偶然着陆在这样的网站上,我想我永远不会再回来了。 - Shikkediel
你是否也考虑过防止打开JS控制台?你不能也不应该阻止这些操作。如果你需要这样做,那么你的页面上可能存在更大的问题。 - Kaiido
请修复问题之前先确定为何需要这样做。 - Kaiido
谢谢回复,我已经在所有页面上定制了返回按钮,所以我不必担心回来! - Hitesh Misro
1
你试图做的是让浏览器出现错误。即使你所要求的是可能的(实际上不可能),用户也不会理解为什么他们的本地返回按钮不起作用。你已经有了自定义的返回按钮,那么为什么要禁用原生的返回按钮呢?你的代码不会阻止Mac用户。你的代码不会阻止任何人在控制台中输入location.href=''location.reload()。你的代码只会让像我和@Shikkediel这样的用户永远不再回到你的网站,但它不会阻止我们使用浏览器做我们想做的事情。 - Kaiido
1个回答

0
考虑使用 window.onbeforeunload 事件处理程序。在您的页面中,使用一个隐藏字段来控制,当离开(刷新 - 是一种离开并再次进入)您的页面是合法的。
<script type="text/javascript">
    window.onbeforeunload = function() {
        var isPageUnloadAllowed = true;

        // check legitimacy of page unload, and return false, if it is prohibited, if it is allowed, return true 


        return isPageUnloadAllowed;
    }
</script>

你无法阻止beforeUnload的默认行为,你只能提供一个提示,询问用户是否真的想离开。 - Kaiido

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接