小程序内嵌H5页面,需要在H5页面进行截图保存和转发给朋友的操作

这篇具有很好参考价值的文章主要介绍了小程序内嵌H5页面,需要在H5页面进行截图保存和转发给朋友的操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

H5项目

首先在H5项目内,你需要下载 weixin-js-sdkhtml2canvas,weixin-js-sdk是为了在项目内可以使用wx的一些API,html2canvas是通过canves画出你页面的base64位图片。

npm install --save weixin-js-sdk

npm install --save html2canvas

import wx from 'weixin-js-sdk'
import html2canvas from 'html2canvas'

注意,使用weixin-js-sdk应该是要签名的,这个让后端去生成接口去获得

that.$store.dispatch('xxx/xxxxxxxxxx(自己的接口)', { url: `http://mp.weixin.qq.com?params='${process.env.VUE_APP_URL}/h5/'` }).then(res => {
      wx.config({
        beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: 'xxxxxxxxxxxxx', // 必填,唯一标识
        timestamp: res.timestamp, // 必填,生成签名的时间戳    
        nonceStr: res.nonceStr, // 必填,生成签名的随机串
        signature: res.signature, // 必填,签名
        jsApiList: ['checkJsApi', 'updateAppMessageShareData'] // 必填,需要使用的JS接口列表
      });
    })

然后开始截图,把base64位图片传给小程序

    //点击图标或者按钮
    share () {
      let save = this.$refs.allImage //需要截图的DOM对象
      html2canvas(save, { useCORS: true }).then((canvas) => {
        let url = canvas.toDataURL("image/png");
        this.href = url
        wx.miniProgram.postMessage({
          data: {
            imgBase64: this.href// 要传给小程序的信息
          }
        })

        let baseHttpUrl = `${process.env.VUE_APP_URL}/h5/#/xxxxxxx`
        // 小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息
        //重定向当前页面
        wx.miniProgram.redirectTo({
          url: `/xxxx/xxxx/xxxx`
        })
        //回退上一页
        // wx.miniProgram.navigateBack({ delta: 1 })
      });
    },

特别需要注意小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息,只能在这三种情况下小程序才能获得H5传过来的数据,就很恶心!

小程序项目

小程序使用web-view内嵌H5项目,获取数据调用微信图片分享API去做保存和转发朋友功能

小程序跳转到内嵌的H5页面,然后web-view页面内操作

      const url = `${baseURL}/h5/#/xxxxxx`    
      wx.navigateTo({
          // 跳转到webview页面
          url: `/pages/mine/carbon/carbonCodeDetail?url=${encodeURIComponent(url)}`,
      });
 <web-view src="{{url}}" bindmessage="postMessage"></web-view>
  onLoad: function (options) {
    // console.log(options,'跳转')
    // console.log(decodeURIComponent(options.url));
    let newUrl=decodeURIComponent(options.url)
    // console.log(newUrl)
    this.setData({
      url: newUrl, // 从跳转页面中传过来的url在options中可以拿到
    });
  },
  
    // 接收H5页返回的信息
  postMessage(e) {
    this.setData({
      imgBase64: e.detail.data[0].imgBase64, // 从跳转页面中传过来的url在options中可以拿到
    });
    if (this.data.imgBase64) {
         //把base64位图片转为线上地址
        app.globalData.$http.uploadBase64({baseData:             this.data.imgBase64,dirCode:'1016'}).then(res => {
          if(res) {
            this.toSave(res);
          }
        })
    }
  },
  toSave(filePath) {
    const that = this
    wx.downloadFile({ // wx.downloadFile的作用就是把线上地址转化为临时路径
      url: filePath, 
      success: function(res) {
        console.log(res);
        wx.showShareImageMenu({
          path: res.tempFilePath, //wx.showShareImageMenu必须使用本地路径或者临时路径
          success: function(res) {
            console.log(res);
            
          },
          fail: function(res) {
            console.log(res);
            
          },
        })
      },
      fail: function(res) {
        console.log(res);
      },
    })
  },
    

不转化为线上地址,使用let filePath: wx.env.USER_DATA_PATH + '/test.png',应该也可以(没有完全测试过),但模拟器是不行的,真机调试是可以显示的,我这里一开始模拟器出不来,所以以为不行,就让后端写了接口转化为线上地址(注意:线上地址必须是小程序白名单内的地址!!!)。

显示的结果

小程序内嵌H5页面,需要在H5页面进行截图保存和转发给朋友的操作文章来源地址https://www.toymoban.com/news/detail-493236.html

到了这里,关于小程序内嵌H5页面,需要在H5页面进行截图保存和转发给朋友的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序内嵌H5页面实现微信支付

    背景: 在微信H5页面已经实现了微信JSAPI的网页支付,老板要求把整个业务线快速转移到微信小程序中,作为懒惰的程序员来说,直接把页面嵌套到小程序不就行了。说干就干,在小程序中设置好基本信息后,一预览居然成功了,一切看来是那么顺利,可到了系统的支付环节

    2024年02月11日
    浏览(54)
  • 微信小程序内嵌h5页面,实现动态设置顶部标题的功能

    一、需求描述 使用HBuilder X作为开发工具,vue作为开发语言,开发微信小程序。微信小程序页面内嵌h5页面,即web-view/web-view标签。通过设置不同url连接地址,设置不同的标题。 二、失败做法 页面A嵌入h5页面,需要给A设置标题。最开始写法是在lonload页面内,使用如下语句实现

    2024年02月04日
    浏览(65)
  • uniapp实现微信小程序内嵌h5页面的相互跳转

    前期准备3个页面,小程序内2个,h5一个。 小程序内:操作页pageA,展示容纳h5的展示页PageWebview.vue。 h5:h5页面pageB,并且有可以访问的线上url。 【微信小程序pageA-内嵌h5页面pageB】 1.1 pageA实现点击跳转,将pageB的访问地址url拼接,并进入展示页PageWebview.vue 1.2 PageWebview.vue页面用

    2024年02月12日
    浏览(61)
  • H5页面内嵌到微信小程序和APP,做分享操作

    最近接到项目新需求,H5项目需要内嵌到微信小程序和APP里,然后将H5页面分享出去,被分享的人可以点击消息跳转到H5页面。H5页面不难,难的是要与微信小程序和APP进行交互,因为以前也没有接触过,所以这里卡的时间有点长。现分享出来 介绍 这里小编使用的是 uinapp 写的

    2024年02月06日
    浏览(167)
  • 支付宝小程序内嵌H5——支付宝小程序webview里面h5跳回道支付宝小程序页面

    背景 小程序开发避免不了要和h5交互,怎么和h5互通信息呢? 代码 1、h5页面手动引入 https://appx/web-view.min.js (此链接仅支持在支付宝客户端内访问);

    2024年02月12日
    浏览(54)
  • 微信小程序使用webview内嵌h5页面 wx.miniProgram.getEnv失效问题

    背景 最近接到一个h5需求,和普通的h5不一样,这个h5页面是嵌入到小程序中使用的,需求简单来说就是展示一个跳转按钮,判断如果是小程序环境下就进行跳转到其他小程序页面。 实现思路 核心逻辑其实就是判断小程序环境这一块,我们可以直接使用wxsdk来进行判断小程序

    2024年02月09日
    浏览(74)
  • 微信小程序内嵌h5 分享子页面点击进入后是主页面解决办法

    通过子页面特定的id有无进行判断,可根据项目自行修改

    2024年01月23日
    浏览(72)
  • 微信小程序webview内嵌H5跳转页面后没有返回按钮完美解决方案

    简单的讲就是我们可以在小程序内放置一个web-view组件来链接我们的HTML页面了。 但是点击跳转页面的时候。页面左上角没有!!返回按钮!!导致回不去了,这不是搞笑的吗。 看了下其他的小程序,发现如果是两个小程序页面跳转的话,第二个页面的左上角是会有返回按钮

    2024年02月08日
    浏览(64)
  • app中内嵌一个WebView,然后在WebView中加载该H5页面来达到打开小程序

    在 Android 应用中内嵌一个 WebView 来打开 H5 页面,从而打开小程序,可以通过以下步骤实现: 添加依赖库 首先,在项目的 build.gradle 文件中添加如下依赖库: 在布局文件中添加 WebView 在布局文件中添加一个 WebView 组件,并在 Activity 中获取该组件: 加载 H5 页面 使用 WebView 组件

    2024年02月14日
    浏览(40)
  • 利用webview 内嵌实现小程序,h5 ,app 页面跳转和数据通讯,附带实现pdf文件的预览(兼容ios和安卓)

    承载网页的容器。会自动铺满整个小程序页面, 个人类型的小程序暂不支持使用。 客户端 6.7.2 版本开始,navigationStyle: custom 对 web-view 组件无效 相关的属性说明:开放能力 / web-view (qq.com) 2.bindmessage 可以实现网页端和小程序之间通讯, 但只在特定时机触发 网页端向小程序

    2024年02月02日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包