防止 iframe 中的导航更改父站点历史记录

2024-01-02

我有一个网页,其中有一个包含一些管理功能的 iframe。

现在,当我在 iframe 中导航(GET 和 POST 请求)时,这些操作会在浏览器历史记录中创建条目。所以现在当我想访问上一页的父页面时,它不会发生,因为浏览器(Chrome)开始返回 iframe 历史记录。

那么有没有办法克服这种行为呢?我希望浏览器导航能够在主页上运行,而不是在 iframe 中。


我认为没有办法阻止浏览器维护历史记录,但对于同源内容,您可以操纵历史记录的内容。

基本上你可以监控事件popstate https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event并使用history.replaceState() https://developer.mozilla.org/en-US/docs/Web/API/History_API#the_replacestate()_method推送您自己的历史记录,该历史记录应替换浏览器自动记录的真实历史记录。请注意,如果没有导航,您无法从历史记录中删除项目,但只能将一个项目替换为另一项目。

有关示例,请参阅:处理 iframe 内的历史导航 https://stackoverflow.com/q/19452427/334451

如果您不想操纵历史记录并且需要阻止浏览器维护所有历史记录,则应该仅使用XHR/ajax https://developer.mozilla.org/en-US/docs/Web/API/History_API#the_replacestate()_method而不是普通的链接和表格。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 iframe 中的导航更改父站点历史记录 的相关文章