问题:vue 页面嵌套 iframe,动态修改 iframe 的 src 属性后,使用路由后退页面无法回退到上一级
原因:iframe 的 src 改变时,window 的 history 也会添加一条记录。
解决方法:
- 在切换
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);
- 由于
vue中的key更改时会重新渲染这个组件,给iframe添加一个key,这样每次切换时,key不一样就会重新创建一个iframe,销毁原来的iframe,这样也能做到不添加历史记录。