小程序之前开放了webview功能必威:,也没有类似

网页程序迁移至微信小程序web-view详解

2018/08/02 · JavaScript · 小程序

原来的文章出处: NeoPasser   

小程序未来越发流行,可是公司的浩大品种都以用网页写的,小程序语法不包容原生网页,使得旧有档期的顺序搬迁至小程序代价相当高。

小程序从前开放了webview功用,能够说是网页应用的一大福音了,不过微信的webview有一对坑,那篇小说正是列举一下自家在开拓进程中相见的部分难题以及自身找到的某个建设方案。

上面介绍登陆页面包车型地铁逻辑代码:

关门当前页面,重回上一页面或多种页面。可经过 getCurrentPages()) 获取当前的页面栈,决定必要回到几层。倘若 delta 大于现存页面数,则赶回到首页。

[html] view plain copy

一贯放到要求出示授权页的onload里

onLoad: function (options) {

      //登陆授权部分逻辑

      var that = this

      var title = arguments[2] ? arguments[2] : '授权登入失利,部分机能将不能够利用,是不是再一次登入?';//当客户撤消授权登入时,弹出的确认框文案

      var user = wx.getStorageSync('user');//登陆过后,客商音信会缓存

      console.log(user)

      if (!user) {

        console.log(!user)

        // 弹出授权页

        wx.login({

          success: function (res) {

            console.log('弹出授权页成功')

            var code = res.code;

            // 是不是同意授权

            wx.getUserInfo({

              success: function (res) { //顾客点击 “同意”

                console.log('允许授权:')

                wx.setStorageSync("user", res)//本地缓存user数据  下一次开垦无需登陆

                var app = getApp()

                app.globalData.user = res//在此时此刻的app对象中缓存user数据

                // 同步音信到页面

                that.setData({

                  userInfo: app.globalData.user.userInfo

                })         

              },

              fail: function (res) { //顾客点击 “拒绝”

                console.log('拒绝授权')

                wx.showModal({  //自定义弹框显示是不是再一次同意授权

                  title: '提示',

                  content: title,

                  showCancel: true,

                  cancelText: "否",

                  confirmText: "是",

                  success: function (res) { //调用模态弹窗成功

                    if (res.confirm) { //借使客户重新同意了授权登陆

                      if (wx.openSetting) {  //当前微信的本子 ,是或不是扶助openSetting,调出小程序设置页面,开启授权

                        wx.openSetting({

                          success: (res) => {

                            if (res.authSetting["scope.userInfo"]) {

                              console.log('客商重新同意授权')

                              wx.getUserInfo({  //跟上边的wx.getUserInfo管理逻辑一样

                                success: function (res) {

                                    wx.setStorageSync("user", res)                           

                                    var app = getApp()

                                    app.globalData.user = res

                                    that.setData({

                                      userInfo: app.globalData.user.userInfo

                                    })

                                }

                              })

                            } else {  //照旧驳回

                              console.log('客商依然驳回授权,登入失利,此处应该转换页面')

                            }

                          },

                          fail: function () {  //调用失利,授权登入不成功

                            console.log('登入战败')

                          }

                        })

                      } else {

                        console.log('当前客户微信版本不协理openSetting,登录战败')

                      }

                    }else{

                      //能够在那边丰裕八个确认授权的页面,假诺不想加的话,就要求每便跳转到那个页面都检验三遍是不是授权,那么那几个函数就活该放权任何钩子函数里了

                      console.log('顾客第三回驳回了授权,在此处转换页面')

                    }

                  }

                })

              }

            })

          }

        })

      } else {//倘诺缓存中早就存在user  那就是曾经报到过

        var app = getApp()

        app.globalData.user = user

      } 

  }

也得以把它封装成一个函数,用的时候调用就足以了

webview动态src

微信的webview有个坑的地点,不会动态的监听src的变动,这就导致了贰个标题,要透过改变src完毕页面跳转就不得以了。
自家尝试了部分主意之后,找到了三个施工方案:

微信webview在页面load的时候会加载二次webview,我们就使用那一个特性来完成动态src难题。

  1. 先是把要跳转的链接消息设置成全局变量,要退换src的时候,先把要src以’?‘拆分为链接和参数两某个,存入全局函数,再调用onLoad就能够完结webview刷新了。
  2. 页面跳转时,我们也亟需src的动态刷新,所以要把链接新闻存入全局函数;页面跳转时,onShow函数会被调用,那时候再调用一回onLoad就足以了。

data: { url: '', loaded: false } // 小程序js里的onLoad函数能够写成这么 onLoad: function () { this.setData({ url: getApp().globalData.urlToken + '?' + getApp().globalData.urlData }) }, changUrl: function () { getApp().globalData.urlToken = '' getApp().globalData.urlToken = 'a=1&b=2' // 直接调用onLoad,就能够落到实处src的刷新 this.onLoad() }, onShow: function () { if (!this.data.loaded) { // 第贰遍不运营 this.setData({ loaded: true }) return } // 直接调用onLoad,就会兑现src的基础代谢 this.onLoad() } // wxml能够写成那样 <web-view src="{{url}}"></web-view>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
data: {
    url: '',
    loaded: false
}
// 小程序js里的onLoad函数可以写成这样
onLoad: function () {
    this.setData({
      url: getApp().globalData.urlToken + '?' +  getApp().globalData.urlData
    })
},
changUrl: function () {
    getApp().globalData.urlToken = 'https://www.example.com'
    getApp().globalData.urlToken = 'a=1&b=2'
    // 直接调用onLoad,就会实现src的刷新
    this.onLoad()
},
onShow: function () {
    if (!this.data.loaded) {
      // 第一次不运行
      this.setData({
        loaded: true
      })
      return
    }
    // 直接调用onLoad,就会实现src的刷新
    this.onLoad()
  }
 
// wxml可以写成这样
<web-view src="{{url}}"></web-view>

必威 1login页面,点击开关完结报到

"pages/index/index",

[html] view plain copy

支付成效

webview里面能够因而jssdk来促成都部队分小程序作用,但不能够直接调用小程序的开销效用,那时候大家就须求更动一下国策了:

  1. 在网页里引进微信jssdk
  2. 在网页须求倡导支付的地方,调用跳转页面的接口,调节小程序跳转到小程序的付出页面(这一个要在小程序里单独写的),跳转的时候,需求把订单的片段信息都凑合到链接里,订单音讯由后台重回,必要通过微信支付系统的合併下单接口,具体参看支付文书档案。
  3. 跳转到小程序开拓页面后,由小程序页面发起支付,支付成功后跳转回webview页面,通过在此之前设置的动态src,调整webview跳转到特定的页面。

JavaScript

// 网页引进jssdk // 网页发起支付 wx.miniProgram.navigateTo({ // payData由后台再次来到,首若是亟需联合下单平台的prepay_id url: '../pay/index?data=' + encodeU逍客IComponent(JSON.stringify(payData)) }) // 微信支付页面 onLoad: function (option) { let page = this try { let data = JSON.parse(option.data) if (!data || !data.prepay_id) { console.error('支付参数错误,请稍后重试', data) } wx.requestPayment({ timeStamp: '' + data.timestamp, nonceStr: data.nonceStr, package: 'prepay_id=' + data.prepay_id, paySign: data.paySign, signType: data.signType, success: function (res) { getApp().globalData.urlToken = `paySuccess.html` // 支付成功 getApp().globalData.urlData = 'data=paySuccessData' wx.navigateTo({ url: '/page/home/index', }) }, fail: function (res) { getApp().globalData.urlToken = `payError.html` // 支付退步 getApp().globalData.urlData = 'data=payErrorData' wx.navigateTo({ url: '/page/home/index', }) }, complete: function (res) { } }) } catch (e) { console.error('支付错误', e) } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 网页引入jssdk
 
// 网页发起支付
wx.miniProgram.navigateTo({
    // payData由后台返回,主要是需要统一下单平台的prepay_id
    url: '../pay/index?data=' + encodeURIComponent(JSON.stringify(payData))
})
// 微信支付页面
onLoad: function (option) {
    let page = this
    try {
      let data = JSON.parse(option.data)
      if (!data || !data.prepay_id) {
        console.error('支付参数错误,请稍后重试', data)
      }
      wx.requestPayment({
        timeStamp: '' + data.timestamp,
        nonceStr: data.nonceStr,
        package: 'prepay_id=' + data.prepay_id,
        paySign: data.paySign,
        signType: data.signType,
        success: function (res) {
          getApp().globalData.urlToken = `paySuccess.html`
          // 支付成功
          getApp().globalData.urlData = 'data=paySuccessData'
          wx.navigateTo({
            url: '/page/home/index',
          })
        },
        fail: function (res) {
          getApp().globalData.urlToken = `payError.html`
          // 支付失败
          getApp().globalData.urlData = 'data=payErrorData'
          wx.navigateTo({
            url: '/page/home/index',
          })
        },
        complete: function (res) {
        }
      })
    } catch (e) {
      console.error('支付错误', e)
    }
  }

实际代码如下:

],

  1. <!--newpage.wxml-->  
  2. <view style="width:100%;margin:30rpx">infofromapp:{{infofromapp}}</view>  
  3. <view style="width:100%;margin:30rpx">infofromindex:{{infofromindex}}</view>  
  4. <view style="width:100%;margin:30rpx">infofromstorage:{{infofromstorage}}</view>  

享受成效

小程序直接分享的webview所在的页面,若是供给加上页面参数,那我们就须求管理一下了。

  1. webview内是不能够向来发起分享的,须要先用wx.miniProgram.postMessage接口,把需求分享的新闻,推送给小程序;推送给小程序的信息不是实时管理的,而是客商点击了享受按键之后,小程序才回到读取的,那将供给每种必要分享的页面再步入的时候就倡导wx.miniProgram.postMessage推送分享新闻给小程序。
  2. 小程序页面通过bindmessage绑定的函数读取post信息,分享的音讯会是二个列表,我们取最终八个享受就好,把分享新闻管理好,存到data里面以便下一步onShareAppMessage调用。
  3. 顾客点击分享时,会触发onShareAppMessage函数,在里面安装好相应的享用信息就好了。
  4. onload函数有一个option参数的,能够读取页面加载时url里带的参数,那时要对本来的onload函数进行改动,完毕从option里读取链接消息。

JavaScript

// 网页wx.miniProgram.postMessage wx.miniProgram.postMessage({ data: { link: shareInfo.link, title: shareInfo.title, imgUrl: shareInfo.imgUrl, desc: shareInfo.desc } }) // 小程序index wxml设置 <web-view src="{{url}}" bindmessage="bindGetMsg"></web-view> // 小程序index js bindGetMsg: function (e) { if (!e.detail) { return } let list = e.detail.data if (!list || list.length === 0) { return } let info = list[list.length - 1] if (!info.link) { console.error('分享音信错误', list) return } let tokens = info.link.split('?') this.setData({ shareInfo: { title: info.title, imageUrl: info.imgUrl, path: `/page/index/index?urlData=${encodeURIComponent(tokens[1])}&urlToken=${tokens[0]}` } }) }, onShareAppMessage: function (res) { if (res.from === 'button') { // 来自页面内转载按键 console.log(res.target) } let that = this return { title: that.data.shareInfo.title, path: that.data.shareInfo.path, imageUrl: that.data.shareInfo.imageUrl, success: function (res) { // 转载成功 }, fail: function (res) { // 转载退步 } } }, onLoad: function (option) { if (option.urlToken) { getApp().globalData.urlToken = option.urlToken } if (option.urlData) { getApp().globalData.urlData = option.urlData } this.setData({ url: getApp().globalData.urlToken + '?'

  • getApp().globalData.urlData }) },
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// 网页wx.miniProgram.postMessage
wx.miniProgram.postMessage({
  data: {
    link: shareInfo.link,
    title: shareInfo.title,
    imgUrl: shareInfo.imgUrl,
    desc: shareInfo.desc
  }
})
// 小程序index wxml设置
<web-view src="{{url}}" bindmessage="bindGetMsg"></web-view>
// 小程序index js
bindGetMsg: function (e) {
    if (!e.detail) {
      return
    }
    let list = e.detail.data
    if (!list || list.length === 0) {
      return
    }
    let info = list[list.length - 1]
    if (!info.link) {
      console.error('分享信息错误', list)
      return
    }
    let tokens = info.link.split('?')
    this.setData({
      shareInfo: {
        title: info.title,
        imageUrl: info.imgUrl,
        path: `/page/index/index?urlData=${encodeURIComponent(tokens[1])}&urlToken=${tokens[0]}`
      }
    })
},
onShareAppMessage: function (res) {
    if (res.from === 'button') {
      // 来自页面内转发按钮
      console.log(res.target)
    }
    let that = this
    return {
      title: that.data.shareInfo.title,
      path: that.data.shareInfo.path,
      imageUrl: that.data.shareInfo.imageUrl,
      success: function (res) {
        // 转发成功
      },
      fail: function (res) {
        // 转发失败
      }
    }
},
onLoad: function (option) {
    if (option.urlToken) {
      getApp().globalData.urlToken = option.urlToken
    }
    if (option.urlData) {
      getApp().globalData.urlData = option.urlData
    }
    this.setData({
      url: getApp().globalData.urlToken + '?' +  getApp().globalData.urlData
    })
},

到此处,供给点击按键能力触发登陆已化解。

事件:

 

遇到的主题素材

  1. openid登入难题
  2. webview动态src
  3. 支出功用
  4. 享用成效
  5. 扫描普通二维码跳转特定页面
  6. 重返开关缺点和失误难题

必威 2安装签到开关

取参:

 

举目四望普通二维码跳转特定页面

除外分享作用之外,小程序还足以透过配备,完毕扫描普通二维码跳转特定页面包车型地铁效应。

以下是微信对此功用的介绍

为了方便小程序开辟者更省心地加大小程序,包容线下已部分二维码,微信徒人平台开放扫描普通链接二维码跳转小程序本领。

作用介绍

一般来讲链接二维码,是指开辟者使用工具对网页链接举行编码后生成的二维码。

线下专营商可不需改动线下二维码,在小程序后台实现布局后,就能够在客商扫描普通链接二维码时张开小程序,使用小程序的功效。
对此常见链接二维码,近日支撑采纳微信“扫一扫”或微信内长按识别二维码跳转小程序.

二维码准则

遵照二维码跳转法则,开拓者要求填写必要跳转小程序的二维码准绳。要求如下:

  1. 二维码法规的域名须经过ICP备案的辨证。
  2. 支撑http、https、ftp发轫的链接(如:、)。
  3. 一个小程序帐号可配备比比较少于13个二维码前缀法则。

前缀占用准绳

开荒者可挑选是或不是占用符合二维码相配准则的全部子准绳。如选择占用,则别的帐号不可申请使用满足该前缀相称准绳的别的子准绳。

如:若开垦者A配置二维码法规:,并选取“占用全部子准则“,其余开采者将不得以陈设知足前缀相称的何穗则如。

自个儿引入的不二等秘书诀

webview完毕方式

  1. 安装跳转作用小程序后台就能够安装,链接是分为四有个别,路https://www.example.com/wxmin…。

    https://www.example.com 域名
    /wxmini/ 小程序前置规则,需要在服务器上建一个文件夹,并且把验证文件放在文件夹线
    home.html 需要跳转的网页页面
    a=1 跳转页面的参数
  2. 对onload函数再拓宽拍卖,完毕普通二维码跳转。

JavaScript

// 对index onLoad在拓宽管理 onLoad: function (option) { this.resetOption(option) if (option.urlToken) { getApp().globalData.urlToken = option.urlToken } if (option.urlData) { getApp().globalData.urlData = option.urlData } this.setData({ url: getApp().globalData.urlToken + '?' + getApp().globalData.urlData }) }, resetOption: function (option) { if (!option) { return } if (option.q) { option.q = decodeURIComponent(option.q) if (option.q.indexOf('') == -1) { return } let tmp = option.q.replace('/wxmini', '') let tmps = tmp.split('?') option.urlToken = tmps[0] option.urlData = tmps[1] } else { option.urlData = decodeURIComponent(option.urlData) } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 对index onLoad在进行处理
onLoad: function (option) {
    this.resetOption(option)
    if (option.urlToken) {
      getApp().globalData.urlToken = option.urlToken
    }
    if (option.urlData) {
      getApp().globalData.urlData = option.urlData
    }
    this.setData({
      url: getApp().globalData.urlToken + '?' +  getApp().globalData.urlData
    })
},
resetOption: function (option) {
    if (!option) {
      return
    }
    if (option.q) {
      option.q = decodeURIComponent(option.q)
      if (option.q.indexOf('https://www.example.com/wxmini/') == -1) {
        return
      }
      let tmp = option.q.replace('/wxmini', '')
      let tmps = tmp.split('?')
      option.urlToken = tmps[0]
      option.urlData = tmps[1]
    } else {
      option.urlData = decodeURIComponent(option.urlData)
    }
}

获得客户音信成功的回调具体得看事情,获取失利的回调首如若加反应计时器去判断页面是或不是加载成功,加载成功后再保存当前页面路线(用于登陆成功后跳转),最终跳转到贰个分包登陆开关的页面(不在app.js中完结报到,而是在login.js中完毕报到,第一回张开就静默授权了)

"text":"吐槽",

 wx.navigateTo({
      url: "../newpage/newpage?infofromindex=" + this.data.infofromindex,
  });

openid登陆难题

微信webview的选择办法很简短,只要如下设置src就能够彰显具体的网址了。

<!-- wxml --> <!-- 指向微信民众平台首页的web-view --> <web-view src=";

1
2
3
<!-- wxml -->
<!-- 指向微信公众平台首页的web-view -->
<web-view src="https://mp.weixin.qq.com/"></web-view>

微信意况里的居多网页都是用页面要完结网址的记名成效,只要把登陆的音讯,举个例子openid也许其余音信拼接到src里就好了。

那边有个问题,民众号的账号种类一般是以openid来决断独一性的,小程序是能够获得openid的,可是小程序的openid和原公众号之类的openid是不一致样的,要求将原先的openid账号系列进级为unionid账号系列。

以下是微信对unionid的牵线

赢得客户中央音信(UnionID机制)

在关切者与公众号发出音信交互后,群众号可获取关心者的OpenID(加密后的微功率信号,每一种客商对种种群众号的OpenID是独步一时的。对于不相同大伙儿号,同一客商的openid差异)。群众号可透过本接口来依照OpenID获取客户大旨新闻,包含小名、头像、性别、所在城市、语言和关注时间。

请细心,假如开采者有在多少个大伙儿号,或在群众号、移动使用之间联合顾客帐号的供给,必要前往微信开放平台(open.weixin.qq.com)绑定民众号后,才可利用UnionID机制来满意上述需求。

UnionID机制表明:

开辟者可透过OpenID来赢得客户大旨音信。非常须求注意的是,倘使开垦者具备五个运动选取、网址接纳和大众帐号,可经过获得客商中央消息中的unionid来区分客商的独一性,因为只假若同二个微信开放平台帐号下的活动选取、网址使用和公众帐号,顾客的unionid是独占鳌头的。换句话说,同一客户,对同一个微信开放平台下的例外应用,unionid是均等的。

做完以上步骤,就能够调用小程序api wx.getUserInfo() 来赢得客商消息了,此步骤供给实行后台音信解密进程,在此就不再赘述,结合小程序api文档操作就好。

获得到unioid之后,将unionid信息拼接到src就可以张开网页登陆操作了(前提是网页能够用跳转链接的主意登陆,类似大伙儿号页面获得openid的款式)。

const Request = require("/utils/request"); //引进封装的http拦截器

App({

onLaunch: function {

this.authorize(options.query); // 直接授权登陆(options.query 参数与享受配置有关,后续小说介绍)

},

authorize: function {

let self = this;

share = share || {};

wx.login({

success: function {

wx.getUserInfo({

success: function {

Request.post("/api/xcxWxLogin", {

code: res.code,

encryptedData: resp.encryptedData,

iv: resp.iv

}).then(({

data: response

}) => {

if (response.code !== 0) {

wx.showToast({

title: response.msg,

icon: "none"

});

} else {

// 保存sessionid ,每趟供给都会在拦截器中自动增多到header中

wx.setStorageSync("UserSessionId", response.data.sessionId);

self.globalData.sessionid = response.data.sessionId;

//todo 后续逻辑代码

}

});

},

fail: function {

//重视,借使获得失败直接跳转

let timer = setInterval => {

let pages = getCurrentPages();

if (pages.length > 0) {

clearInterval;

let currentPage = pages[pages.length - 1];

if (currentPage.route === "pages/user/userbind/userbind") {

return true;

}

try {

wx.setStorageSync("SYS_PREVIOUSPAGE", currentPage);

setTimeout => {

wx.redirectTo({

url: "/pages/login/login"

});

}, 300);

} catch {

wx.redirectTo({

url: "/pages/login/login"

});

}

}

}, 200);

}

});

}

});

}

})

}],

5.app.js

重返按键缺点和失误难题

比方web页面是在率先个页面包车型地铁话,那时候会有二个难题,小程序的回到开关就未有了,webview不只怕使用微信的归来按钮了,那时候只要在webview页前面多加一个跳转页面就好了(第贰个页面也足以设置成获取顾客权限的页面,但是我感到那样感受倒霉,也不是具有页面都要客户获得了权力才方可选择)

末尾的页面层级

JavaScript

"pages": [ "page/index/index", // 首页,管理onload里的option内容,为了再次回到开关设置的 "page/home/index", // webview所在的页面 "page/auth/index", // 获取客商权限的页面 "page/pay/index", // 支付页面 "page/error/index" // 错误消息页面 ],

1
2
3
4
5
6
7
"pages": [
    "page/index/index", // 首页,处理onload里的option内容,为了返回按钮设置的
    "page/home/index", // webview所在的页面
    "page/auth/index", // 获取用户权限的页面
    "page/pay/index", // 支付页面
    "page/error/index" // 错误信息页面
  ],

必威 3签到回调

"tabBar": {

  1. //index.js  
  2. //获取使用实例  
  3. var app = getApp()  
  4. Page({  
  5.   data: {  
  6.     info: app.data.info,  
  7.     infofromindex: '来自index.js的信息',  
  8.     infofrominput: ''  
  9.   },  
  10.   onLoad: function () {  
  11.   },  
  12.   //跳转到新页面  
  13.   gotonewpage: function () {  
  14.     wx.navigateTo({  
  15.       url: "../newpage/newpage?infofromindex=" + this.data.infofromindex,  
  16.     });  
  17.   },  
  18.   //获取输入值  
  19.   searchInputEvent: function (e) {  
  20.     console.log(e.detail.value)  
  21.     this.setData({ infofrominput: e.detail.value })  
  22.   },  
  23.   //保存参数  
  24.   saveinput: function () {  
  25.     try {  
  26.       wx.setStorageSync('infofrominput', this.data.infofrominput)  
  27.     } catch (e) {  
  28.     }  
  29.   }  
  30. })  

参照链接

  1. webview文档
  2. 小程序unionid介绍
  3. unionid获得情势

    2 赞 2 收藏 评论

必威 4

login思路:一进来该页面,从缓存中把上七个页面拿出来(读取后必要免去该缓存),然后把登陆开关设置成获取顾客信息体系,如

// complete

[javascript] view plain copy

点击登入按键后触发bindgetuserinfo回调,在回调中决断是或不是授权,未有一些击分明授权就提示要授权,有授权就径直调用app.js的授权方法,最终重定向到上三个页面(是重定向不是回去,並且亟需静心是否导航页面

url:'../index/index',

  1. <!--index.wxml-->  
  2. <view>  
  3. <button style="background-color:#00ff00;margin:20rpx" bindtap="gotonewpage">跳转</button>  
  4. <input  style="background-color:#eee;margin:20rpx;height:80rpx" placeholder="请输入须要保留的参数" bindinput="searchInputEvent" />  
  5. <button style="background-color:#ff0000;margin:20rpx" bindtap="saveinput">存入Storage</button>  
  6. </view>  

自己的思绪是一进来小程序的时候,立马去调用登入接口(wx.login,在此以前的代码不用变)并在回调中去调用获取顾客信息接口(wx.getUserInfo),那时候就须求特别注意了,供给会wx.getUserInfo的拿走败北钩子进行判定,借使退步,那么直接跳转去登录页面(登陆页面中得以兑现按键登陆);倘诺成功,继续连续逻辑代码。

fail: function() {

3.newpage.js

PS:须求思虑的标题是,在另外页面,怎么能力理解是还是不是早就到位报到了啊?

<navigator url="../login/login?title=1111" >跳转到新页面</navigator>

 

const Request = require("../../utils/request");

Page({

/**

* 页面包车型客车最早数据

*/

data: {

route: "/pages/home/home"

},

/**

* 生命周期函数--监听页面加载

*/

onLoad: function {

let self = this;

wx.getStorage({

key: "SYS_PREVIOUSPAGE",

success: function {

if (res.errMsg === "getStorage:ok") {

self.setData({

route: "/" + res.data.route,

share: res.data.options

});

}

wx.removeStorage({

key: "SYS_PREVIOUSPAGE"

});

}

});

},

bindgetuserinfo: function {

if (e.detail.errMsg.indexOf > -1) {

wx.showModal({

title: '温馨提醒',

content: '您未同意授权,系统不能够检查评定你的地方,请允许授权',

});

} else {

getApp().authorize(this.data.share);

setTimeout => {

if (["/pages/home/home", "/pages/course/courselist/courselist", "/pages/course/publiclist/publiclist", "/pages/consult/consultlist/consultlist", "/pages/usercenter/usercenter"].indexOf(this.data.route) > -1) {

wx.switchTab({

url: this.data.route

});

} else {

wx.redirectTo({

url: this.data.route

});

}

}, 800);

}

}

})

"pagePath":"pages/tucao/tucao",

 try {
      wx.setStorageSync('infofrominput', this.data.infofrominput)
    } catch (e) {
 }

多年来,微信官方修改了 getUserInfo、authorize等 接口,不能够直接弹出授权窗口,那让我们原先一起首就获取客户音讯完毕报到的意义全部失效,新分明是率先次拿走客户音信只可以通过 button 去接触,那么有如何实施方案吧?

},

①仓库储存数据

onLoad:function(options) {

2.index.wxml

 header: {'content-type':'application/json、默认值、或者、、'application/x-www-form-urlencoded'// }, 

1.index.js

决定属性:<view wx:if="{{condition}}"></view>

微信支付文书档案中的数据缓存方法:

"borderStyle":"white"

页面间传递参数的笔记

{

 

2、wx.redirectTo(OBJECT)

必威 5

 success:function(res){console.log(res.data) }

微信小程序开垦公测贰个月.数据传递的措施非常少.常常遇上页面销毁后回传参数的难题,小程序中并未类似Android的startActivityForResult的法子,也不曾类似广播那样的通信格局,更不曾看似eventbus的车轱辘可用.

},

[javascript] view plain copy

本文由必威发布于必威-前端,转载请注明出处:小程序之前开放了webview功能必威:,也没有类似

相关阅读