如何避免返回到带有 HTML id 属性标记的上一个部分,而是转到上一个网站?

Posted

技术标签:

【中文标题】如何避免返回到带有 HTML id 属性标记的上一个部分,而是转到上一个网站?【英文标题】:How to avoid going back to a previous section tagged with an HTML id attribute and go to a previous website instead? 【发布时间】:2019-09-18 13:26:30 【问题描述】:

我有一个包含多个部分(主页、服务、投资组合、联系人)的单页网站。我使用id 属性指向每个部分。

如何避免浏览器存储 #home 或我在历史记录中浏览的任何部分并将我带到上一个网站?

有什么方法可以实现吗?

我搜索的是这与网站状态有关。因此,每次点击任何部分都会通过添加#id 的名称来更新URL 中的网站状态。可以使用 javascript 中的 onhashchange 函数更改状态。我不确切知道如何使用它,或者是否可以实施其他方法。

【问题讨论】:

Window.history.replacestate() 可能会有所帮助或使用插件来浏览各个部分。 【参考方案1】:

正如 Aditya Thakur 指出的那样。您可以使用 window.history.replaceState()

这是一个示例代码:

<a href="#home" onclick="handleLink(event, this)">Home</a>

还有handleLink函数:

function handleLink(event, element) 
    event.preventDefault();

    window.history.replaceState(null, "Title", element.href);
  

replaceState 不会在您的浏览器历史记录中添加新条目。因此,当您单击浏览器上的后退按钮时,您将返回上一页。

这是文档:https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_replaceState()_method

希望对你有帮助!

【讨论】:

感谢您的回答。这很完美。 Imma 阅读了更多关于它的内容,以完全了解如何修改行为。

以上是关于如何避免返回到带有 HTML id 属性标记的上一个部分,而是转到上一个网站?的主要内容,如果未能解决你的问题,请参考以下文章

传递带有@JsonIgnore 标记的属性时抛出错误

vue是如何避免重复渲染的?

我应该使用带有 render 属性的 ui:fragment 来有条件地在带有 JSF 2.2 的 Facelets 中呈现 HTML 标记吗?

如何在谷歌地图上一一加载标记动画[重复]

通过JS计时,5秒后返回到上一页的属性有啥

反应原生地图:如何通过用户界面向地图添加带有属性和标记的点