问题描述:
我有一个详情页面 入口有很多 进入时的页面路径也有很多 举个例子:
可能为 a-b-c-详情页 也可能为a-详情页。大致可以分为这两种路径 一种是直接进入 一种是经过了一个或多个页面 然后问题是什么呢 当我直接从a-详情页时 可以通过我的代码去设置分享 如下
onLoad(options){
this.url = decodeURIComponent(options.url)
console.log(this.url)
const queryObj = this.getUrlParams(this.url)
if(this.url.includes('fund-detail')){
this.title = 'XX'
}else if(this.url.includes('stocksBonds')){
this.title = 'XX'
else{
uni.hideShareMenu()
}
},
onShareAppMessage: function (option) {
var nowUrl = option.webViewUrl
console.log(decodeURIComponent(nowUrl))
return {
title:this.title,
path:'components/webPage?url=' + encodeURIComponent(this.urlDelP(this.url,'usertoken')+ '&usertoken=' + '&miniIsShare=true')
}
},
然后如果我途中多经过了一个或多个(其实都一样啦,主要是进入的第一个页面如果不支持分享)就不会再触发这段代码了 导致我的h5页面无法调用分享
我想了很多办法 使用小程序web-view的通信 这个设计的很反人类 他只有在点击分享或者后退或销毁时才触发 毛用没有 也尝试过使用websocket 但是官方并不支持
跟想过直接把相关页面直接用小程序写 然后使用jssdk跳转过去 想到这 我灵机一动 既然h5能跳转到小程序 我为什么不再设置一个web-view去专门给这个嵌套的h5页面去使用呢
大概就是 我在小程序单独写一个web-view的页面 然后在嵌套的h5页面的前一个页面 利用wx的jssdk去跳转到这个页面然后把URL带上
代码如下:
if (window && window.__wxjs_environment === 'miniprogram') {
const url = ‘https://baidu.com’
wx.miniProgram.navigateTo({ url: `/你的小程序路径?url=` + encodeURIComponent(url) })
}
这样就可以重新触发判断分享的逻辑了
记录一下 其实很简单 主要是小程序的web-view 好多都支持 跟h5发送消息只能在点击分享 后退 销毁时 这基本就没啥用了 网页加载成功也会有回调 但是在小程序中执行最初的h5页面 在点击进入其他页面一个方法都不会执行