由iframe引起的无法返回上一页的问题

问题描述

使用的框架: vue
页面里面嵌套了 iframe,
在设置iframe的src后,不知道为什么使用 router.back() 无法跳转到上一页,必须使用 router.go(-2) 才可以。但问题是有的时候用 router.go(-1) 可以,有的时候却不行。因为iframe里面的内容对于我来说是黑盒,在内部可能进行了重定向操作而我不知道。

解决方法

1.使用router.push()
这个操作会导致上一页的router.back() 又回到本页了,
2.使用router.replace()
这个操作虽然不会添加历史路由记录,但是多出来的历史记录也不会被删除,导致在上一页用router.back()的时候会无法出去
3.定时任务 + 路由判断,我弄了半天实在没撤,才出此下策

const router = useRouter();
const route = useRoute();
// 这个是iframe的url
const srcUrl = ref("")
const myUrl = route.path + ""
// 回退函数
function back() {
    router.go(-1)
    setTimeout(() => {
        let url = route.path + ""
        // 检测当前页的路由是否还是原来的,如果是原来的则重新回退
        if (url === myUrl) {
            back()
        }
    }, 20)
}
srcUrl.value = route.query.url + ""

你可能感兴趣的:(vue.js,javascript,前端)