如何防止iframe影响浏览器历史记录

时间:2014-12-07 09:59:29

标签: javascript html

我在处理网络项目时遇到浏览器历史记录问题。

我的页面中有一个iframe,我会使用Javascript更改其src值。 整个过程工作得很好,除了这个src的更改会影响浏览器的历史记录。

当我更改iframe网址时,我不想推送浏览器历史记录。 我希望用户离开整个基页并在点击后退按钮时转到上一个位置,而不是仅仅返回更改后的iframe。

我尝试过的事情:

  • 删除以前的iframe,并替换为具有新src
  • 的新iframe
  • 使用jQuery的replaceWith()方法
  • 使用iframe.contentWindow.location.replace()替换iframe位置

上述两种方法与仅在Safari浏览器上直接更改src无异。后退按钮仍然受到影响。

Haven尚未在其他浏览器上进行测试,但我认为其他webkit浏览器是相同的。

1 个答案:

答案 0 :(得分:1)

我认为您的代码中还有其他内容我们没有看到,因为.contentWindow.location.replace在我的测试中有效。

https://codepen.io/tmdesigned/pen/WJEqON

我也尝试在codePen之外的空白html页面上,认为codepen编辑器正在影响结果。它继续工作。

我已将其粘贴为代码下方的代码段,但我不认为SO允许iFrame工作。

mx.model.FeedForward.create
$( 'html' ).on( 'click', '.change-iframe', function() {
    $( '#dynamic-iframe' )[0].contentWindow.location.replace( $( this ).data( 'src' ) );
});