【问题标题】:override browser back button [duplicate]覆盖浏览器后退按钮[重复]
【发布时间】:2014-07-24 20:15:12
【问题描述】:

我正在做一个项目,在这个项目中我需要处理浏览器后退按钮,点击它我想重定向到主页。

我看过很多帖子,有很多方法可以实现。

我想知道,实现它的最佳方法是什么。

如果有人知道类似的帖子,请发布网址。

感谢您的帮助

我使用了以下代码:

function HandleBackFunctionality()
{
    alert('ckikc')
    if(window.event)
    {
        if(window.event.clientX < 40 && window.event.clientY < 0)
        {
            alert("Browser back button is clicked...");
        }
        else
        {
            alert("Browser refresh button is clicked...");
        }
    }
    else
    {
        alert('clicked')
        if(event.currentTarget.performance.navigation.type == 1)
        {
            alert("Browser refresh button is clicked...");
        }
        if(event.currentTarget.performance.navigation.type == 2)
        {
            alert("Browser back button is clicked...");
        }
    }
}
window.onbeforeunload = HandleBackFunctionality;
$(document).unload(HandleBackFunctionality);

它不适合我:(

@kapa 说这是一个重复的问题,我已经提到已经为此搜索了很多,并且已经看到了很多解决这个问题的方法。

我的问题不是解决它的方法,而是可用的最佳解决方案

【问题讨论】:

  • 用户不喜欢这种情况。
  • 试试谷歌有一些关于它的帖子来模拟这个。
  • @RPM 我有这个应用程序的有限用户
  • 不,我正在为一些内部操作构建 CRM,一组编辑将处理它

标签: javascript jquery


【解决方案1】:

您不能只覆盖浏览器按钮的行为。

想象一下,如果任何人都可以像这样“伪造”浏览器导航,将会导致什么样的安全问题。让用户认为他们导航到了不同的网站是傻瓜网络钓鱼的第 1 章......

但是,@Aleklinkeda similar question,在你的问题的 cmets 中,有一个不错的选择(这是,imo,实现预期结果的最佳方式)。

【讨论】:

  • 我认为 OP 想要,如果点击浏览器的后退按钮,则重定向到主页。
  • 是的,我明白了,但这是不可能的。即使是,也不应该这样做。不要试图更改浏览器的功能。如果我访问www.a.com/b,然后导航到www.a.com/c,我希望后退按钮加载www.a.com/b,而不是www.a.com
  • @Cerbrus 我们也在单页应用程序中执行此操作,所以如果我们需要它应该在那里
  • @rajansoft1:我在答案中链接到的问题有一个解释单页应用程序如何做到这一点的答案。这种方式与更改back 按钮的功能无关,而是更改了网站在浏览器历史中“注册”的方式,而不会影响浏览器本身。
猜你喜欢
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 2011-04-06
  • 2011-01-21
  • 1970-01-01
  • 2018-08-10
  • 2013-03-02
  • 2014-04-09
相关资源
最近更新 更多