小程序和H5的交互

小程序和H5的交互
最近做一个小程序,是H5页面写的,但是需要用到小程序的定位,获取手机号信息等等API,所以一起说一下怎么在H5页面里面去用,首先配置域名这些就不多说了,自己做了解,直接上代码,以跳转微信地图定位为例子,首先看H5部分的
我这是vue的项目,所以引用微信的sdk是这样的,如果是jQuery的,可以直接script标签引入

import wx from 'weixin-js-sdk'

然后是点击跳转到地图页面的事件

toMapView(){
	wx.miniProgram.navigateTo({
        url: '/pages/map/position?lat='+_this.latitude+'&lon='+_this.longitude,
        success: function() {
          console.log('success')
        })
	})
}

这里的意思是点击之后,跳到一个小程序自己的页面,URL就是小程序里的路由,后面跟着的参数是我H5这里获取到的经纬度,这里H5部分就完了,看小程序部分,首先在app.json里面把上面用到的路由页面配置好

{
  "pages": [
    "pages/map/position",
  ]
 }

然后我们在pages里面建一个map的文件夹,这是我的项目路径
小程序和H5的交互_第1张图片
wxml文件里面直接写一个标签就可以了,也可以什么都不写

 

看js怎么接收H5传过来的参数

Page({

  /**
   * 页面的初始数据
   */
  data: {
    lon:'',
    lat:''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      lon: parseFloat(options.lon),
      lat: parseFloat(options.lat),
      success(){},
      fail(){
        wx.navigateBack({
          delta: 1
        })
      },
      complete(){}
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    var _this=this
    wx.openLocation({
      latitude: this.data.lat,
      longitude: this.data.lon,
      scale:18
    })
  },
  })

data里面西先定义变量,onLoad函数里面获取到路由传过来的变量,然后就setData重新给变量赋值,ready函数里面是传经纬度生成地图,这是微信的API,直接官网查就知道了

最后重点说一下返回问题,做到这里,小程序页面上方会有一个返回按钮,直接返回,是一个空白的页面,再返回,才会返回到刚才的H5页面,这个解决办法

onHide: function () {
    wx.navigateBack({
      delta: 1
    })
},

如果需要在数据获取之后,自动携带数据返回,又不跳转页面,比如H5页面用小程序获取手机号,写法是这样的(当然,现在的敏感信息需要用户自己点击触发才能获取,所以中间还是有页面,这只是举例事件完成自动跳回)

getPhoneNumber(e) {
    let pages = getCurrentPages()//当前页面
    let prePage = pages[pages.length - 2]//上一页
    
    //需要回跳的路由和携带的参数,这里自己根据需求写自己的路由
    let jumpUrl = app.globalData.baseUrl + '/#/wx/' + this.data.jumpRoute + '?encryptedData=' + encodeURIComponent(e.detail.encryptedData) + '&iv=' + encodeURIComponent(e.detail.iv)
    //跳转事件
    prePage.setData({
      orginSrc: jumpUrl
    })
  },

你可能感兴趣的:(小程序,H5,小程序)