从浏览器历史记录中删除当前页面

Removing current page from browser history

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

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

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

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

我不想通过 AJAX 发布提交,因为那样也会影响闪信系统。

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

试试这个

window.location.replace(url);

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

使用window.close():

close();

注意:隐含当前选项卡。这相当于:

window.close();

或者您可以指定一个不同的 window。

所以:

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>

你在此处 return false 以防止事件的默认行为。否则浏览器将尝试转到 URL(显然不是)。