微信小程序內聯h5頁面,實現分享

在小程序內直聯h5的頁面(pages/webview/webview.js),該頁面爲<web-view>的容器,使用<web-view>組件web

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

須要bindmessage事件postMessage方法小程序

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

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

能夠將分享的數據經過該事件獲取。this

一、如何分享這個h5頁面url

在pages/webview/webview.js這個容器頁面須要定義兩個事件:spa

//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中的方法code

//該方法在頁面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頁面,一個是分享出去後,從分享進入的頁面xml

以上是分享的流程blog

二、怎麼從分享進入時,使頁面顯示的是分享的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 }; }
相關文章
相關標籤/搜索