从外部iFrame重定向和链接中删除历史记录

时间:2015-01-25 14:26:34

标签: javascript html html5 iframe

我有一个指向外部链接的iframe,一旦iFrame加载,它会执行一些重定向。这会导致在浏览器中添加历史记录,以及用户单击iframe内的链接时。

这会导致奇怪的用户体验,因为您有指向同一父页的额外后退历史状态。

我想知道是否有办法阻止iframe向浏览器添加历史记录?

5 个答案:

答案 0 :(得分:3)

由于链接是外部的,简短的回答是否定的。如果您控制iframe的内容,则可以执行一些操作。在将iframe的src属性添加到DOM之后或者如果用户跟随iframe中的链接时,将随时更新历史记录。通过控制iframe内容,当用户单击链接时,您可以使用postMessage并让父窗口用新的iframe元素替换iframe元素。在同一个域中,您可以使用window.parent。

答案 1 :(得分:2)

您可以尝试使用sandbox =“”属性来阻止iframe重定向。

<iframe src="http://example.com/" sandbox=""></iframe>

答案 2 :(得分:1)

  

无法清除会话历史记录或禁用非特权代码的后退/前进导航。最接近的可用解决方案是 location.replace()方法,该方法使用提供的网址替换会话历史记录的当前项目。

Source (MDN)

location.replace() | MDN

答案 3 :(得分:1)

http://jsbin.com/coregedoze/2 以下是我的代码与 iframe 的链接,它没有沙箱属性 - 因为此属性仅适用于HTML5和有限的浏览器版本。我重新检查了这段代码,它不会保存任何历史记录。唯一的情况是,如果您更改iframe的整个页面重新加载并进入历史记录的另一个条目,可以使用sandbox =&#34; value&#34;正如上面JAYDEN LAWSON的回答中提到的那样。另一种方法是在页面中声明iframe中的链接,并在iframe中调用它们,如traget =&#34; iframe_a&#34; ,iframe_a是你的iframe名称。希望这会有所帮助: - )

答案 4 :(得分:1)

不,你因为XXS而将src设置为另一个域的iframe几乎什么都不做