Vue页面内嵌ifream,返回异常问题
程序员文章站
2024-03-21 08:28:52
...
问题描述
业务需求,点击文件列表项,进入内嵌 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。
参考
- * 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
上一篇: 收集一些常用的js工具方法
下一篇: php导入excel文件