阻止iframe中的导航更改父网站历史记录

Ren*_*nka 5 html browser iframe google-chrome

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

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

那么有没有办法克服这种行为?我希望浏览器导航在主页上工作 - 而不是在iframe中.

Mik*_*nen 0

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

基本上,您可以监视事件popstate并用于history.replaceState()推送您自己的历史记录,该历史记录应替换浏览器自动记录的真实历史记录。请注意,如果没有导航,您无法从历史记录中删除项目,但只能将一个项目替换为另一项目。

有关示例,请参阅:处理 iframe 内的历史导航

如果您不想操纵历史记录并且需要阻止浏览器维护所有历史记录,则应该仅使用XHR/ajax而不是普通的链接和表单。