收藏
回答

小程序中使用两个WebView,Storage里面的数据不同步?

约定:

    某一级专用WebView:WebView1

    通用WebView:WebView2


小程序中一个一级页面使用WebView实现,即WebView1,在WebView1链接的web页面中,跳转至WebView2,但WebView1的load中,从Storage取出了“cookie”数据,而在WebView2的load中,无法获取该数据,疑似两个WebView对应的是不同的Storage,请问有没有办法让两个WebView共享Storage数据


最后一次编辑于  11-29
回答关注问题邀请回答
收藏

2 个回答

  • 隐风之龙
    隐风之龙
    11-29

    所有WebView页面处理url都会调用该函数

    // webViewUtil.js
    handleWebViewParams(url) {
            const urlParams = this.handleUrlStringToParams(url)
            const timestamp = Date.parse(new Date())
            urlParams.timestamp = timestamp
            urlParams.platform = 'wechat_mp'
            urlParams.app = 'ysy'
            if (getApp().globalData.token) {
                urlParams['#id-token'] = getApp().globalData.token
                delete urlParams.dzj_wx_mp_is_login
            } else { // 告诉后台我没有登录, 你快把 cookie 清掉
                urlParams['dzj_wx_mp_is_login'] = 'false'
            }
     
            const path = this.getPathFromUrl(url)
            const tempUrl = encodeURIComponent(this.handleParamsToUrlString(path, urlParams))
            return tempUrl
        }


    // app.js
    {
      globalData: {token: null}
      onShow: function() {
      this.globalData.token = wx.getStorageSync('key_token')
    }
    }

    WebView1先行加载,getApp().globalData.token 调用后成功获取key_token的值,WebView2调用 getApp().globalData.token 则获取不到

    11-29
    赞同
    回复 1
  • 小满
    小满
    11-29

    上代码片段吧

    11-29
    赞同
    回复 7
    • 隐风之龙
      隐风之龙
      11-29
      稍等
      11-29
      回复
    • 隐风之龙
      隐风之龙
      11-29
      已上传代码,有劳费心了
      11-29
      回复
    • 小满
      小满
      11-29回复隐风之龙
      如果是传递给webview的话。应该把token封装一下,通过bindmessage,或者url传值传递
      11-29
      回复
    • 隐风之龙
      隐风之龙
      11-29回复小满
      把token传递给WebView,确实是通过url传递的,但是,从WebView1里面打开WebView2时,WebView2自行从Storage取不到数据,两个WebView似乎是隔离的
      11-29
      回复
    • 小满
      小满
      11-29回复隐风之龙
      WebView2自行从Storage应该是拿不到,不再一个环境里
      11-29
      回复
    查看更多(2)
问题标签