微信小程序-webview分享

这篇具有很好参考价值的文章主要介绍了微信小程序-webview分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目背景

最近有个讨论区项目需要补充分享功能,希望可以支持在微信小程序进行分享,讨论区是基于react的h5项目,在小程序中是使用web-view进行承载的

可行性

目标是在打开web-view的页面进行分享,那就需要涉及h5和小程序的通讯问题,查看官方文档:

  1. 网页向小程序 postMessage 时,可以通过bindmessage获取post的信息
  2. 只有在特定的场景下才会触发bindmessage,例如小程序后退、组件销毁、分享、复制链接等,刚好满足分享的场景
    微信小程序 usergent,微信小程序,小程序,webview,web-view
  3. h5端如何post信息
    微信小程序 usergent,微信小程序,小程序,webview,web-view

基于postMessage和bindmessage进行开发

h5代码

注意:我这里是为了方便演示,所以点击按钮才post内容,可以结合自身需求,也可以在加载成功就post数据

  1. 环境区分:通过判断是否在小程序环境navigator.userAgent.includes(“miniProgram”)
  2. 动态判断是否有miniProgram:if (!window[“wx”] || !window[“wx”].miniProgram) { return }
  3. post信息
import React from "react"
import "./WebView.less"

const shareData = {
  title: "测试h5分享",
  path: "https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html",
  imageUrl: "https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg",
}

const WebView = () => {

  const handleSetShareOptions = () => {
    // 判断是否再微信小程序环境
    const userAgent = navigator.userAgent
    const isInMiniProgram =  userAgent.includes("miniProgram")
    if (!isInMiniProgram) { return }
    if (!window["wx"] || !window["wx"].miniProgram) { return }
    window["wx"].miniProgram.postMessage({
      data: shareData,
    });
  }
  return <div className="web-view-page">
    <div className="title">我是h5页面</div>
    <div className="share-content">
      <div className="content">
        <div className="content-title">分享内容:</div>
        <div className="main">
          <div className="item">分享标题:{shareData.title}</div>
          <div className="item">分享路径:微信webView文档:{shareData.path}</div>
          <div className="item">分享封面图:<img src={shareData.imageUrl} alt='' className='icon-btn' /></div>
        </div>
      </div>
    </div>
    <div onClick={handleSetShareOptions} className="share-container">
      <img src={require("./icon-share.png").default} alt='' className='icon-btn' />
      <span>点击设置分享</span>
    </div>
  </div>
}

export default WebView

小程序代码

  1. 这个newPage是用于承载所有的h5页面的,url应该都是读路由的数据,这里为了方便样式,直接给url赋默认值
  2. 动态读取url:在onLoad时候,获取options的url,并进行赋值
  3. 获取h5 post的信息,有两个点需要注意
    • e.detail.data是一个数组,post的数据会保存在该数组中,所以需要取data的最后一个数据处理展示
    • 分享url的拼接:需要注意的是,我们分享出去的是小程序,并不是h5,所以用户点击进来的肯定还是小程序,所以url的拼接需要把当前的newPage路径带上,然后真正的路径通过路由参数拼接,最终在onLoad通过options获取,也就是上面的第二步
      • path: /pages/newPage/newPage?url=${path},
  4. 特别注意,这时候在h5页面点了分享按钮,其实也是不会响应,还记得bingmessage的触发时机吗,只有我们点击了分享按钮,才会触发bingmessage获取信息,记得一定要点击分享按钮
<web-view src="{{url}}" bindmessage="handleGetMessage" />
Page({
  data: {
    url: 'http://localhost:3001/64/html5-bbs/web-view',
    isOverShare: true,
    shareOptions: {
      title: "",
      path: "/pages/index/index",
      imageUrl: ""
    },
  },

  onLoad(options = {}) {
    if (!options.url) { return }
    this.setData({ url: options.url})
  },

  onShareAppMessage() {
    return this.data.shareOptions
  },

  handleGetMessage(e) {
    let data = e.detail.data || []
    if (!data.length) { return }
    const { title, path, imageUrl } = data[data.length - 1]
    this.setData({
      shareOptions: {
        title,
        path: `/pages/newPage/newPage?url=${path}`,
        imageUrl,
      }
    })
    console.log('%c [  ]-157', 'font-size:13px; background:pink; color:#bf2c9f;', this.data.shareOptions)
  },
})


效果展示

微信小程序 usergent,微信小程序,小程序,webview,web-view
微信小程序 usergent,微信小程序,小程序,webview,web-view
微信小程序 usergent,微信小程序,小程序,webview,web-view

微信小程序 usergent,微信小程序,小程序,webview,web-view

微信小程序 usergent,微信小程序,小程序,webview,web-view文章来源地址https://www.toymoban.com/news/detail-851847.html

到了这里,关于微信小程序-webview分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 使用web-view在微信小程序中显示网页

    使用web-view在微信小程序中显示网页

    比如要在小程序中显示《用户协议》《隐私政策》等网页内容,可以直接用web-view显示 如下代码所示 打开的页面标题显示的是网页的标题,也就是title标题/title标签中的内容 最后,记得在小程序后台开发管理中添加业务域名,把要访问的网址添加到业务域名中,否则小程序发

    2024年02月15日
    浏览(19)
  • 微信小程序实现支付宝支付——web-view实现

    微信小程序实现支付宝支付——web-view实现

    由于使用到的微信小程序需要实现支付功能,而微信支付的申请手续较为繁琐,所以使用了支付宝支付,但是微信小程序正常情况不支持支付宝支付,所以我使用了web-view内嵌了支付宝的h5支付。 不会使用支付宝沙箱支付的同学可以看这篇文章Springboot支付宝沙箱支付 代码如下

    2024年02月11日
    浏览(49)
  • uniapp微信小程序嵌入页面web-view配置

    uniapp微信小程序嵌入页面web-view配置

    uniapp开发微信小程序的时候, 有时候需要嵌入H5页面 可以使用小程序自带的  web-view  组件相当于 HTML页面中的 iframe  1.配置业务域名 开发管理 ---开发设置 ---业务域名   然后去配置你的业务域名就可以了   2.页面中使用 web-view 使用起来还是很方便的 uniapp提供属性可以具体

    2024年02月11日
    浏览(13)
  • 微信小程序跳转公众号文章 web-view方式

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 小程序和公众号都必须时企业认证的 1.在小程序里面关联相关的公众号 2.在公众号里面关联相关的小程序 提示:以下是本篇文章正文内容,下面案例可供参

    2024年02月09日
    浏览(15)
  • 关于微信小程序<web-view>组件跳转报错问题-解决!

    关于微信小程序<web-view>组件跳转报错问题-解决!

    报错以上的问题 尝试了好久--发现的问题-官网上文章看完了也没有看到   当点击 itemClick1 的时候 就报以上的 错误 当点击 itemClick2 的时候就能成功 跳转 原因是:  itemClick1和当前跳转的位置是同级,应该是web-view组件不能跳转到同级以外的地方! 总结:  所有想要使用 web-view 组

    2024年02月16日
    浏览(13)
  • 微信小程序使用web-view,内嵌跳转h5踩坑记!!

    微信小程序使用web-view,内嵌跳转h5踩坑记!!

    由于业务需要在微信小程序内,嵌入外网h5到小程序,项目整体在开发,调试完成都没有任何问题,但是,在部署到测试环境之后,跳转h5报如下错误:   通过查阅官方文档,以及各类技术文档,报错的原因是,没有在微信公众平台配置业务域名和合法域名;具体操作步骤 【

    2024年02月08日
    浏览(14)
  • 微信小程序web-view环境下H5跳转小程序页面方法

    一般的,web-view组件的src属性指定的H5页面之间,可以正常的采用超级链接a标记对进行页面之间的条转。但是web-view页面要想通过手指触碰返回小程序页面,就无法使用超级链接a标记了。那么这个问题应该如何解决呢? 首先需要在H5页面中引入JSSDK,它可以让H5页面的js文件执

    2024年01月17日
    浏览(44)
  • 微信小程序-web-View使用以及跟小程序的通信传值

    简单来说 就是小程序嵌套H5页面 web-view 官网地址 不需要在这个页面做修饰,H5页面会自动铺满 bindmessage属性用来绑定从H5传值过的函数; 注意:传给H5的数据只能拼接在url后面 代码如下(示例): 接收 h5 页面传递过来的参数 代码如下(示例): 向小程序发送消息,会在特定

    2024年02月11日
    浏览(13)
  • 微信小程序web-view嵌入uni-app H5页面,通过H5页面传参给小程序进行转发分享页面,并通过点击转发出来的卡片,定向打开对应H5路径

    index.wxml  index.js 在H5项目的App.vue页面获取参数实现自动跳转到对应页面,包括携带的参数值

    2024年02月12日
    浏览(47)
  • 微信小程序通过web-view网页授权获取用户公众号OpenID

    微信小程序通过web-view网页授权获取用户公众号OpenID

    第一步: 通过该地址 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfot=sandbox/index 获取到微信公众号测试号AppID与appsecret (测试公众号可以测试使用,个人公众号不允许使用。微信认证服务号可以使用,微信认证订阅号不可以使用)。 接口权限查看链接: https://developers.weix

    2024年02月08日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包