小程序內h5頁面,完成分享


小程序內直聯h5的頁面(pages/webview/webview.js),該頁面為的容器,使用組件

 <web-view wx:if="{{h5url}}" src="{{h5url}}" bindmessage="h5PostMessage" ></web-view>

需要bindmessage事件和postMessage方法

bindmessage:網頁向小程序 postMessage 時,會在特定時機(小程序后退、組件銷毀、分享)觸發並收到消息。e.detail = { data }

也就是說,該事件的觸發時機只有三種,是延遲的。

可以將分享的數據通過該事件獲取。
1、如何分享這個h5頁面
在pages/webview/webview.js這個容器頁面需要定義兩個事件:

//h5向小程序發送的數據
h5PostMessage: function (e) {
    this.h5Data=  e.detail.data;  //當用戶點擊這個h5頁面的分享時獲取到
},

// 用戶點擊右上角分享
onShareAppMessage: function (options) {
    return {
      title: this.h5Data.title,
      desc: this.h5Data.desc,,
      path: this.h5Data.path
    }
}

h5.js 中使用微信提供的jssdk中的方法

//該方法在頁面create完成之后就可以調用,不需要事件去觸發,提前將信息發出去,等到點擊分享的時候就可以獲取到這個信息了
wx.miniProgram.postMessage({
    data: {
                title: '分享的標題',
                desc:'分享的描述',
                path:'/pages/share/share.js?data='+JSON.stringfy({url:encodeURIComponent('當前h5頁面的url地址')}) //重點,share.js是小程序的頁面中,從分享進入的h5的落地頁
        
});

在小程序中需要兩個頁面,來做web-view 的容器,一個是內聯的h5頁面,一個是分享出去后,從分享進入的頁面

以上是分享的流程

2、怎么從分享進入時,使頁面顯示的是分享的h5頁面
在/pages/share/share.wxml中

<web-view wx:if="{{h5url}}" src="{{h5url}}"></web-view>

在/pages/share/share.js中:

onLoad: function (options) {
        var data = options.data;//postMessage path中帶的url 參數
        var url =decodeURIComponent(data.url);
        this.setData({url:url});
        
},

// 用戶點擊右上角分享 
  onShareAppMessage: function (options) {
    var path = '/pages/share/share.js';

    var url = encodeURIComponent(options.webViewUrl); 
       path += '?data=' + JSON.stringify({ url: url }); 
    return { path: path }; 
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM