优雅的实现小程序 webview 跳转到另外一个小程序

今天公司要一个逻辑,h5页面可以被两个小程序调用,调用这个h5以后里面有一个小跳转,小程序A和小程序B点击都可以跳转到小程序B的一个页面。

只要实现下面的代码即可

wx.navigateToMiniProgram({
  appId: '',
  path: 'page/index/index?id=123',
  extraData: {
    foo: 'bar'
  },
  envVersion: 'develop',
  success(res) {
    // 打开成功
  }
})

这不是很简单嘛,但是等我细细的看过后,我才发现跳转页面是小程序内嵌h5写的,小程序A通过webview跳转到小程序A一点都不难,难的是小程序A通过webview跳转到小程序B,我细细一想,实现的逻辑是这样的

  • 小程序A–webview–小程序B

这个可以实现吗,,很抱歉,目前小程序并不支持通过内嵌h5的方式跳转到另外一个小程序
优雅的实现小程序 webview 跳转到另外一个小程序_第1张图片

技术无难事,我们可以通过另外一种优雅的方式进行小程序内嵌h5跳转到另外一个小程序

具体的实现方式如下
小程序A–webview(内嵌h5)–小程序A–小程序B

废话不多说,看代码
在小程序A中如下

//跳转到一个webview,jsonUrl是数据
wx.navigateTo({
  url: '/pages/webView/webView?src='+jsonUrl,
})

在h5的页面如下

ShopInfo(){
  console.log("aaaaa")
  //find是小程序传过来的数据
  //若是find等于1,就说明这个页面是通过A打开的,点击按钮跳转到小程序B
  //若find等于0,就说明这个页面是通过小程序B打开的,点击按钮跳转到小程序B
  if(this.find=="1"){
     wx.miniProgram.switchTab({//switchTab是跳转到导航栏的页面
       url: '/pages/Shop/Shop?&type=10&id='+Id+'&agentId='+agentId,
     })
  }
  else{
    wx.miniProgram.navigateTo({//navigateTo是跳转到非导航栏的页面
      url: '/pages/Shop/Shop?&type=10&id='+Id+'&agentId='+agentId,
    })
  }
  
},

走到这一步,小程序A通过webview跳转到小程序A就是实现了,下面实现跳转到小程序B的方法。

小程序B新建一个空白页面Shop(可以随便命名,只是为了跟小程序A的跳转页面相同,所以也命名为shop)

	onLoad: function (options) {
	    console.log(options)//webview的穿过来的数据都在这里
	    wx.navigateToMiniProgram({//在这里实现跳转到小程序A的功能
	      appId: '这里写要跳转的appid',
	      url: '/pages/Shop/Shop?&type=10&id='+options.id+'&agentId='+options.agentId,
	      success(res) {
	        console.log("cg")
	      }
	    })
	},

这样子我们的逻辑就实现了,在这个h5页面,若是小程序A打开,它这个按钮点击就跳往小程序B的页面。若是小程序B打开,就跳转到小程序的B页面,成功实现,打完收工。

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