【问题标题】:Removing current page from browser history从浏览器历史记录中删除当前页面
【发布时间】:2017-03-21 05:07:23
【问题描述】:

我正在我的网站中构建一个文本编辑器,工作流程如下。

  1. /list 中,用户从列表中选择他们想要编辑的条目,该列表会将他们带到/edit/[article_id]
  2. 用户完成工作,然后点击提交。
  3. 服务器处理该事物,并将它们重定向回/edit/[article_id],这现在反映了已编辑的工作。服务器还会在页面上激活一条闪烁消息,以指示编辑成功。

此时,用户可能想要返回/list 并单击浏览器的“返回”按钮。这将根据他们提交的次数将他们反复带回编辑器。

我尝试在页面的某处放置一个后退按钮,但很多用户只是忽略了它。

我宁愿不通过 AJAX 发布提交,因为这也会影响 Flash 消息系统。

我喜欢做的是在用户提交时替换历史列表中的最后一个条目,而不改变其长度。有可能吗?

【问题讨论】:

    标签: javascript html html5-history


    【解决方案1】:

    试试这个

    window.location.replace(url);
    

    使用replace() 后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮导航到该页面。

    【讨论】:

    • 那么,我应该在/list 中使用window.location.replace()
    • url = window.location.href
    • 优秀。尽可能简单,正是需要的东西?
    • 哇。太酷了
    【解决方案2】:

    使用 window.close():

    close();
    

    注意:当前选项卡是隐含的。这是等价的:

    window.close();
    

    或者你可以指定一个不同的窗口。

    所以:

    function close_window() {
      if (confirm("Close Window?")) {
        close();
      }
    }
    

    使用 HTML:

    <a href="javascript:close_window();">close</a>
    

    或:

    <a href="#" onclick="close_window();return false;">close</a>
    

    您在此处返回 false 以防止事件的默认行为。否则浏览器将尝试访问该 URL(显然不是)。

    【讨论】:

    • 这不是问题
    猜你喜欢
    • 2017-11-02
    • 2010-09-22
    • 2011-02-03
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多