Vue页面内嵌ifream,返回异常问题

问题描述

业务需求,点击文件列表项,进入内嵌 iframe 的详情页预览pdf,火狐浏览器点击页面按钮或者浏览器返回按钮两次才能退回到列表页。页面按钮返回功能通过$router.go(-1)实现。

问题原因

浏览器机制的原因,在 iframe 导航变化后手动点击浏览器的后退按钮也依然只是后退 iframe 中的导航。

<iframe ref="iframe" :src="pdfUrl"></iframe>

本项目中iframe,在pdfUrl为空时已经渲染,pdfUrl有值后相当于替换了iframe的src,返回功能,go(-1)类似window.history.go(-1) 会先回退 iframe 的内容。

解决方案

  • 方案1:当pdfUrl有值时再渲染页面
<iframe ref="iframe" :src="pdfUrl" v-if="pdfUrl"></iframe>
  • 方案2:

不要修改 iframe.src,新建一个 iframe 元素并替换旧 iframe 元素,这样不会产生 history。直接 createElement,替换原来的 iframe。

参考

  • stackoverflow modify-iframe-src-without-entry-to-history-object
  • vue-router issues#1917
  • https://www.jianshu.com/p/d88148184b79
  • https://www.cnblogs.com/yuxiaole/p/9771858.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值