V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mogutouer
V2EX  ›  问与答

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

  •  
  •   mogutouer · 2017-08-23 23:00:39 +08:00 · 3686 次点击
    这是一个创建于 2674 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是这样的,我有一个 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(-?) 到某个之前的页面。
    3 条回复    2017-08-23 23:20:29 +08:00
    pubby
        1
    pubby  
       2017-08-23 23:10:45 +08:00
    回退前把<iframe>清理掉
    readonly
        2
    readonly  
       2017-08-23 23:15:20 +08:00
    iframe 里面的链接用 location.replace 跳转,这样就只会有一个历史记录了
    mogutouer
        3
    mogutouer  
    OP
       2017-08-23 23:20:29 +08:00
    @readonly #2 第三方的跳转没法控制,有一些是直接 header 跳的根本来不及操作
    @pubby #1 我试试是否可行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5783 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:40 · PVG 10:40 · LAX 18:40 · JFK 21:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.