小程序内嵌H5页面分享

项目需求

H5构建的列表页和详情页通过web-view插入小程序;
客户希望可以通过小程序的分享给朋友功能将详情页分享给微信好友

难点:小程序和内嵌H5之间的通信


解决方案:

H5端:

引入jweixin.js
(注意:至少1.3.2版本:引入的位置要靠前,不然会出现调用的相关函数的时候js还没有解析完成)
Js中加入以下代码:
这里我是将详情页的地址传递到小程序端

var send =function(){
			wx.miniProgram.postMessage({ data:{foo:'传递的数据'}})
		  }
send()

postMessage()用于向小程序端传递信息,这里我是将详情页的地址传递到小程序端

小程序端:(基于原生构建)

HTML

<view class="page-body">
  <view class="page-section page-section-gap">
    <web-view id="myWebView" src="{{url}}" bindmessage='getUrl'></web-view>
  </view>
</view>

bindMessage是web-view的自带属性,网页向小程序 postMessage 时,会在以下特定时机触发bindMessage并收到消息:小程序后退、组件销毁、分享、复制链接;

getUrl:function(data){
    this.data.redirectUrl=data.detail.data[0].foo
  },

到这一步,小程序已经拿到从H5 页面传来的信息;
接下来,我们需要让小程序在分享的时候把信息带上
有些小程序点上面的三个点是没有分享的,这个需要我们自己配置一下
在这里插入图片描述
分享触发的函数有两个,根据自己的需要写

onShareAppMessage () {
    return {
      title: this.data.Title,
      path: 'pages/index/index?params='+this.data.redirectUrl
    }
  },

因为H5的页面不是小程序中的,程序没法找到对应页面,所以H5 的网址只能是以参数的形式被分享

在小程序页面加载的时候拿到参数并赋值给web-view绑定的url

onLoad:function(options){
      if(options.params!=undefined){
        this.setData({
          url:options.params
        })
      }
  },

这样,用户就可以通过小程序的分享功能将详情页分享给微信好友了

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在微信小程序中嵌入H5页面,并在H5页面中接收数据并请求,您可以使用以下步骤: 1. 在微信小程序中创建一个web-view组件,它允许您在小程序中显示H5页面。可以使用以下代码创建web-view组件: ```html <web-view src="{{url}}" bindmessage="onMessage"></web-view> ``` 其中,`src`属性用于指定要加载的H5页面的URL地址,`bindmessage`属性用于监听来自H5页面的消息。 2. 在H5页面中,您可以使用`postMessage`方法将数据发送回小程序。例如,您可以使用以下代码将数据发送回小程序: ```javascript var data = {foo: 'bar'}; window.parent.postMessage(data, '*'); ``` 其中,`data`是要发送的数据,`window.parent.postMessage`方法用于将数据发送回小程序。 3. 在微信小程序中,您可以使用`onMessage`方法来监听来自H5页面的消息,并在接收到消息后执行必要的操作。例如,您可以使用以下代码来监听来自H5页面的消息: ```javascript onMessage: function(event) { var data = event.detail.data; // 处理接收到的数据 } ``` 其中,`event.detail.data`表示从H5页面发送的数据。 4. 如果您需要在H5页面中向服务器发送请求并获取响应,可以使用标准的AJAX请求。例如,您可以使用以下代码向服务器发送POST请求: ```javascript var xhr = new XMLHttpRequest(); xhr.open('POST', '/path/to/api'); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { if (xhr.status === 200) { var response = JSON.parse(xhr.responseText); // 处理响应数据 } else { console.error(xhr.statusText); } } }; xhr.send(JSON.stringify(data)); ``` 其中,`/path/to/api`是您要访问的API的URL地址,`data`是您要发送的数据。在收到响应后,您可以使用`JSON.parse`方法将响应数据转换为JavaScript对象,并执行必要的操作。 ### 回答2: 微信小程序内嵌H5页面后,可以通过向H5页面传递数据和向服务器发送请求来实现数据的传递和处理。 首先,在微信小程序中,我们可以使用web-view组件来内嵌H5页面。使用该组件时,可以通过src属性指定H5页面的URL地址。在H5页面中,可以通过window对象的location.search或者document.referrer来获取从小程序传递过来的数据。 其次,在H5页面中可以使用Ajax等技术向服务器发送请求获取数据。可以使用XMLHttpRequest对象或者使用第三方库比如axios来实现。在发送请求时,需要注意跨域问题,需要在小程序后台配置服务器域名白名单,并在H5页面的响应头中添加Access-Control-Allow-Origin字段。 在小程序中传递数据给H5页面可以通过URL参数,如: ``` web-view src="/pages/index/index?param1=value1&param2=value2" ``` 在H5页面中,可以通过window对象的location.search来获取URL参数,然后进行处理,如: ``` var params = location.search.slice(1).split("&"); var data = {}; params.forEach(function(item) { var arr = item.split("="); data[arr[0]] = arr[1]; }); console.log(data); ``` 在H5页面请求数据可以使用如下代码,以使用axios发送GET请求为例: ``` axios.get("http://example.com/api/data") .then(function(response) { console.log(response.data); }) .catch(function(error) { console.error(error); }); ``` 需要注意的是,在微信小程序中使用H5页面时,需要通过合理的设计和安全措施来防止恶意代码的注入和数据的非法访问,确保小程序的数据安全和用户信息的保护。 ### 回答3: 微信小程序内嵌H5页面可以通过两种方式接受数据并发起请求。 一种方式是通过使用URL传参的形式将数据传递给H5页面,并在H5页面中解析URL参数来获取数据。在小程序内嵌H5页面时,可以通过`web-view`组件的`src`属性来指定H5页面的URL地址,可以在URL后面添加参数,如:`https://www.example.com/page?data=xxx`。在H5页面中,可以通过获取`location.search`来获取URL中的参数,再进行解析和使用。 另一种方式是通过JavaScript脚本在小程序H5页面之间进行双向通信,实现数据的传递和请求。在小程序中,可以通过`web-view`组件的`bindmessage`事件监听H5页面发送的消息,并通过`e.detail.data`获取传递的数据。H5页面可以通过`window.parent.postMessage`方法将数据发送给小程序,如:`window.parent.postMessage({data: 'xxx'}, '*')`。小程序页面收到消息后,可以根据需要进行处理,如发起请求等。 以上两种方式可以根据具体需求选择合适的方式来进行数据传递和请求,具体实现可以根据小程序H5页面的开发文档进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值