微信小程序嵌套webview,分享的时候用使用右上角三个点打开菜单,点击分享给朋友一切正常。
但是我使用在页面增加一个open-type='share'按钮分享出去,点击就是空白,加载不了webview内的网页。不知道为什么出现这种情况,哪位帮忙看看,谢谢了。
<web-view class='page_web' src="{{url}}" bindmessage="bindGetMsg">
<cover-view class="share" v-if="showBar">
<button class="sharebtn" open-type='share'>分享button>
cover-view>
web-view>
data: {
url:'https://www.testxcx.com',
showBar:false
},
bindmessage(e) { //接收web-view传递的参数
if (e.detail.data[e.detail.data - 1].title) {
this.setData({ //存储状态
title: e.detail.data[0].title
})
}
},
//分享功能部分代码
onLoad: function(options) {
options.url ? this.setData({
url: decodeURIComponent(options.url)
}) : this.setData({
url: options.url
});
//延迟显示coverview
setTimeout(()=>{
this.showBar = true
},200)
},
//获取网页标题
bindGetMsg: function(e) {
this.data.shareObj = e.detail.data[e.detail.data.length - 1];
},
//分享并返回页面标题和链接
onShareAppMessage: function(options) {
let shareObj = this.data.shareObj;
if (shareObj) {
return {
title: shareObj.shareTitle,
desc: shareObj.shareDesc,
path: '/pages/index/index?url=' + encodeURIComponent(options.webViewUrl),
}
}
},
setTimeout(()=>{
this.showBar = true
},200)
这里有问题吧,应该是
setTimeout(()=>{
this.setData({showBar:true})
},200)
看代码分享参数是通过加载额网页postMessage发送给小程序来设置的,确认网页没错误执行了postMessage发送信息给web-view
this.data.shareObj = e.detail.data[e.detail.data.length - 1];
console.log(this.data.shareObj);//打印看看数据
而且cover-view也遮盖不了web-view,做这个按钮功能没意义
我有点好奇,当你点击分享触发 onShareAppMessage 函数时,你这个时候判断应该不会成立吧,你返回的应该是个空吧?