微信小程序嵌套H5页面,调用微信小程序扫码功能,并将结果传回H5页面

这篇具有很好参考价值的文章主要介绍了微信小程序嵌套H5页面,调用微信小程序扫码功能,并将结果传回H5页面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现方式: 小程序嵌套h5页面,点击h5页面的扫码按钮跳转到小程序的扫码页面,进入之后会立即扫码,拿到扫码结果后,跳转到小程序定义好的webview页面,再由webview页面进入h5页面。

缺点:为了唤起扫码,会进入一个空白的扫码页面

1、小程序嵌套h5页面方法

在小程序中,创建一个webview页面,页面里面设置web-view容器,容器地址src为h5页面地址,即可跳转到h5页面。

(1)嵌入方式:web-view承载网页的容器,嵌套在这个容器中的网页可以使用微信提供的jssdk接口,如微信扫一扫,图片,音频等,当然所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用。(此次使用的小程序原生的扫码,没有使用jssdk)

(2)具体接入方式,参考官方文档。

web-view接入h5参考文档:web-view | 微信开放文档

接入的h5页面调用jssdk的步骤和注意点参考:概述 | 微信开放文档

tips: 如果webview接入之后,无法打开页面被拦截,需要在小程序开发者工具中设置不校验接入的域名的合法性。

 2、h5页面唤起小程序的原生扫码功能

h5页面有一个扫码按钮,通过此按钮跳转到小程序的扫码页面,扫码页面一进入就会调用扫码方法

实现步骤:

(1)安装依赖,导入依赖

npm install weixin-js-sdk


import wx from "weixin-js-sdk";

(2)h5使用依赖进行跳转

   代码如下

 <van-button type="primary" @click="goToScan">扫码按钮</van-button>
gotoScan () {
      const gdsSkuId = this.$route.query.gdsSkuId
      const snValue = this.snValue
        wx.miniProgram.getEnv((res) => {
          if (res.miniprogram) {
            // 小程序环境下逻辑,跳转到小程序的扫描页面地址(/pages/dx-scan-code/scan-code,自己定义的地址),可以带上页面返回时需要的参数
            wx.miniProgram.navigateTo({
              url: '/pages/dx-scan-code/scan-code?gdsSkuId=' + gdsSkuId + '&snValue=' + 
                JSON.stringify(snValue)
            })
          } else {
            console.log(res, 'res')
            this.$toast('非微信环境逻辑')
          }
        })
      } else {
        if (
          navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1
        ) {
          this.$toast('微信内置浏览器')
        } else this.$toast('非微信环境逻辑')
         // 非微信环境逻辑,比如在浏览器下,可以在这里写一些事件
     }
    },

3、小程序扫码页面实现扫码,并将扫码结果传到webview页面,再由webview页面跳转到h5页面完成扫码结果的传递。

(1)小程序的扫码页面,其他页面可以不修改,主要是scan-code.js页面,一进入扫码页面,立即唤起扫码功能

 onLoad(options) {
  //兼容ios微信无法立即调起扫一扫
  setTimeout(function () {
      wx.scanCode({//调用扫一扫
          onlyFromCamera: false,
          scanType: ['barCode'], // 仅支持条码  可根据项目需求自由设定,比如二维码等
          success: function (res) {//扫码成功的回调函数
              let snValue = options.snValue
              snValue = JSON.parse(snValue) ? JSON.parse(snValue) + '\n' + res.result 
               :res.result
              wx.reLaunch({// 扫码成功的话,重定向到webview页面中,并且携带result等参数
                  url: '/pages/webview/webview?result=' + res.result + '&gdsSkuId=' + 
                   options.gdsSkuId + '&snValue=' + JSON.stringify(snValue)
              })
          },
          fail: function(res) {//扫码失败的回调函数
              wx.reLaunch({//失败的话,重定向到页面中
                url: '/pages/webview/webview?gdsSkuId=' + options.gdsSkuId + '&snValue=' + 
                      options.snValue + '&baseUrl=' + options.baseUrl
              })
          },
      })
  }, 50)
  },

(2)webview页面实现的两次跳转,一次是嵌入跳转,一次是扫码完成之后跳转,只需要改变src的路径即可。

代码如下

webview.wxml页面

<web-view wx:if='{{src&&src.length>0}}' src='{{src}}' binderror='merror' bindload='loaded'>
</web-view>

webview.js页面

// pages/webview/webview.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    src:"http://baidu.com", // 小程序跳转到h5首页的地址(默认地址) 
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
     var that = this;
     // 判断需要跳转到h5的哪个页面,这里通过路由中的参数,可以知道是要跳转回到h5含有扫码按钮的页面
    if (options.gdsSkuId) {
            if (Object.keys(options) && Object.keys(options).length > 0) {
              if (options.gdsSkuId) {
                  that.setData({
                     src: that.data.src + '#/sku-goods-stock?result=' + options.result + 
                      '&gdsSkuId=' + options.gdsSkuId + '&snValue=' + options.snValue,
                    isNetError: false
                  })
              }
         }
     }
    
  },

})

(3)h5扫码页面,根据路由参数获取扫码结果即可

步骤图

微信小程序嵌套h5,微信小程序,小程序

 文章来源地址https://www.toymoban.com/news/detail-664720.html

到了这里,关于微信小程序嵌套H5页面,调用微信小程序扫码功能,并将结果传回H5页面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序中的H5页面如何调用地理位置导航

    在微信小程序的H5页面中,我们经常需要使用地理位置导航功能,以便为用户提供准确的导航服务。下面将介绍如何在微信小程序的H5页面中调用地理位置导航功能,并提供相应的源代码示例。 获取用户地理位置 在调用地理位置导航之前,首先需要获取用户的地理位置信息。

    2024年02月04日
    浏览(48)
  • 微信小程序内嵌H5页面获取openid+分享功能

    主要实现功能:1.通过webview实现小程序内嵌H5页面                          2.在H5页面获取到用户的openid                          3.在H5页面实现分享获取到分享人的openid和被分享者的openid 代码实现: 1.通过webview实现小程序内嵌H5页面 传参:在地址后面加入的参数就是我

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

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

    2024年02月04日
    浏览(65)
  • uniapp项目编译成H5后跳转到微信小程序(支持微信扫码、支付宝扫码)

    uniapp项目编译成 H5 后跳转到 微信小程序 (支持微信H5、支付宝H5) 场景:1、微信扫码跳转到该H5中后点击某事件(或者不点击直接跳转)需要跳转到微信小程序;2、支付宝扫码跳转到H5中后点击某事件(或者不点击直接跳转)需要跳转到微信小程序 思路:调用后端接口返回

    2024年02月13日
    浏览(50)
  • 微信扫码跳转到微信小程序指定页面

    用户想通过在微信上扫描实验室二维码直接进入小程序申请加入实验室 1、首先我们需要在微信公众平台的开发管理——开发设置,找到(扫普通链接二维码打开小程序),点击添加,会出现下面的页面,配置好之后点击保存就行了 填写页配置点击保存之后要再发布 2、在微

    2024年02月16日
    浏览(123)
  • 前端怎么从H5调起微信扫描二维码?小程序使用扫码功能.

    wx.scanCode(Object object) 参数 属性 类型 默认值 必填 说明 最低版本 onlyFromCamera boolean false 否 是否只能从相机扫码,不允许从相册选择图片 1.2.0 scanType Array.string [\\\'barCode\\\', \\\'qrCode\\\'] 否 扫码类型 1.7.0 合法值 说明 barCode 一维码 qrCode 二维码 datamatrix Data Matrix 码 pdf417 PDF417 条码 success

    2024年02月10日
    浏览(48)
  • 微信小程序扫码功能

    扫码功能有两个实现形式: 1.做一个扫码按钮,调用微信自带api(wx.scanCode ) wx.scanCode({ success(res) { //res.path 可以打印出来,包含所有参数 }) 2.就是直接通过微信的扫一扫,获取参数 如果本地测试的话参照如下图 编译二维码入口(img) 在api.js中 onShow: function (options) { //options

    2024年02月07日
    浏览(43)
  • 微信小程序嵌套的H5使用小程序分享(分享微信好友或朋友圈)

    嵌套在微信小程序中的H5想要使用小程序自带分享功能,分享H5的页面给微信好友或朋友圈 H5中可使用wx.miniProgram.postMessage向小程序的webview发送消息,会触发组件的message事件,在小程序webview页面onShareAppMessage,onShareTimeline中进行使用。

    2024年02月13日
    浏览(63)
  • 微信小程序码生成,扫码携带参数进入指定页面

    一、准备工作 (1)微信小程序后台获取小程序的 appId 和 secret 小程序后台管理(开发管理➡开发设置) (2)扫码跳转的页面在 app.json 中已经注册 注册的路径与传过去的路径一致 (3)小程序已经有已发布的线上版本,否则会找不到页面报错 体验版的不行,找不到相应的页

    2024年02月15日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包