vue router 在页面有 iframe 的情况下,如何返回真的上一页?

2017-08-23 23:00:39 +08:00
 mogutouer
是这样的,我有一个 webapp,内有客服的功能,点进去就像 app 里用 webview 来嵌入一个第三方的客服系统,vue 里我用了 iframe 来嵌入。
页面有一个 nav bar,就像原生 app 的 navbar,我想让这个 nvabar 上的返回,是返回到进入客服页面的上一页。

现在出现的问题是,如果被嵌入的第三方客服内进行了跳转,那么用 vue router 的返回,其实跟浏览器一样,是在操作 iframe 内的 history,导致如果客服的 iframe 里有 link 跳转页面并点了多次 url 变更,那么用户要点很多次返回才能真正的返回。


目前想到 2 个解决方案不知可否实现( google 了很久找不到什么是否可以实现)

1.有没有办法完全不用浏览器的 history ?就像原生 app 嵌入 webview 一样,app 的 push 和 back 操作与嵌入页面无任何关系。
2.能否像原生 app 的 nav 一样,得到 history 之前每一个页面的历史记录?这样至少可以根据记录用 go(-?) 到某个之前的页面。
3657 次点击
所在节点    问与答
3 条回复
pubby
2017-08-23 23:10:45 +08:00
回退前把<iframe>清理掉
readonly
2017-08-23 23:15:20 +08:00
iframe 里面的链接用 location.replace 跳转,这样就只会有一个历史记录了
mogutouer
2017-08-23 23:20:29 +08:00
@readonly #2 第三方的跳转没法控制,有一些是直接 header 跳的根本来不及操作
@pubby #1 我试试是否可行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385307

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX