vue页面嵌套iframe的路由回退问题

523 阅读1分钟

问题:vue 页面嵌套 iframe,动态修改 iframesrc 属性后,使用路由后退页面无法回退到上一级

原因:iframesrc 改变时,windowhistory 也会添加一条记录。

解决方法:

  1. 在切换 src 的时候把 iframe 给销毁再重新创建就行了。这样就是一个新的 iframe,不会触发他的变更操作,也就不会往 window.history 中存入记录。
let  parent = document.querySelector(".iframe-parent");
let child = document.getElementById("iframe");
let newElement = document.createElement("iframe");
// newElement.src = tab.path;
newElement.id = "iframe";
parent.replaceChild(newElement, child);
  1. 由于 vue 中的 key 更改时会重新渲染这个组件,给 iframe 添加一个 key,这样每次切换时,key 不一样就会重新创建一个 iframe,销毁原来的 iframe,这样也能做到不添加历史记录。