爱采购

发产品

  • 发布供应
  • 管理供应
DESTOON微信小程序,实现网页分享打开分享页DESTOON微信小程序,实现网页分享打开分享页_destoon教程_PHP 教程_软件编程_教程资讯_大秦朝旭-码农学习站

DESTOON微信小程序,实现网页分享打开分享页

   2023-10-08 84 0
导读

自从微信小程序支持内嵌网页之后,呼声高涨得不得了。的确,这个确实让我开发我们公司的小程序高效了很多,主要是可以引入现有的功能完整的普通网页。需求是这样

自从微信小程序支持内嵌网页之后,呼声高涨得不得了。的确,这个确实让我开发我们公司的小程序高效了很多,主要是可以引入现有的功能完整的普通网页。

需求是这样子的:小程序启动授权等操作成功后直接跳转到内嵌网页,内嵌的网址也就是公司的官网产品项目,而后,产品项目里面的各个网页都能支持分享操作,当然,对方打开的一定是你分享的那个页面而不是整个小程序初始页面。

解决思路:官方提供的转发接口 onShareAppMessage 中自定义路径即可转发指定的页面。使用 web-view 存放内嵌网页,路径以参数的形式传递,但初始化加载页面的时候再填充路径。



  1. <web-view src="web_src"></web-view>


一开始是想着既然内嵌网页的路径可以动态添加,那我转发时再重新跳转回内嵌网页,附上我转发的这个地址就好了,但是,但是,打开转发了的页面时,竟然提示找不到路径,可谓愁死人了。控制台打印检查发现,onShareAppMessage(options) 中 options 携带了一个参数 webViewUrl,即当前转发的文件的路径,在转发成功之后,通过


  1. this.setData({
  2.    web_src: options.webViewUrl
  3. })



赋值后,打开的转发页面依旧提示找不到页面。经仔细研究 onShareAppMessage 接口中各个值的含义和功能后,得出以下结论


  1. onShareAppMessage: function (res) {
  2.    if (res.from === 'button') {
  3.      // 来自页面内转发按钮
  4.      console.log(res.target)
  5.    }
  6.    return {
  7.      title: '自定义转发标题',
  8.      path: '/page/user?id=123',
  9.      success: function(res) {
  10.        // 转发成功
  11.      },
  12.      fail: function(res) {
  13.        // 转发失败
  14.      }
  15.    }
  16.  }


个人对这个 path 的理解是这样子的,微信小程序接口里面的path,是不是 指代微信小程序里跳转到其他页面的路径,如果一个内嵌路径无法实现转载操作页面和分享页面,那我就分开好了,再加一个内嵌路径来专门存放转发的结果。果不其然,这样子一处理,还真能实现了需求,话不多说,上代码:

步骤1:准备工作,在 app.js里 定义一个全局变量,用于存放 内嵌网页的地址,如,


  1. globaldata: {
  2.    userInfo: null,
  3.    ctxPath: 'https://xxxxxx', //你的封装网址
  4. }


步骤2:使用 web-view 加载内嵌网页


  1. <web-view src="{{web_src}}"></web-view>


对应的事件为:


  1. //生命周期函数--监听页面加载
  2. onLoad: function (options) {  //初始化页面的时候加载补充内嵌网页的路径
  3.    let that = this;
  4.    that.setData({
  5.        web_src: ctxPath  
  6.    })
  7.  },


备注:因为内嵌网页网址之前存放成全局变量在app.js里,故我们要先引入全局变量


  1. var app = getApp();
  2. var ctxPath = app.globalData.ctxPath;  //内嵌网页的路径
  3. 分享操作实现:
  4. onShareAppMessage: function (options) {
  5.      let that = this
  6.      let return_url = options.webViewUrl        //分享的当前页面的路径
  7.      var path = 'pages/sharepage/sharepage?shareUrl=' + return_url   //小程序存放分享页面的内嵌网页路径
  8.      console.log(path, options)
  9.      return {
  10.          title: '内嵌网页分享',
  11.          path: path,
  12.          success: function (res) {
  13.              // 转发成功
  14.              wx.showToast({
  15.                  title: "转发成功",
  16.                  icon: 'success',
  17.                  duration: 2000
  18.              })
  19.          },
  20.          fail: function (res) {
  21.              // 转发失败
  22.          }
  23.      }
  24.  },


步骤3:定义存放分享页面的内嵌网页路径,即 sharepage.wxml,附上如下代码:


  1. <web-view src="{{share_src}}"></web-view>    //share_src:分享后的路径


定义事件:


  1. onLoad: function (options) {
  2.        console.log(options)
  3.        let that = this;
  4.        that.setData({
  5.            share_src: options.shareUrl,
  6.        })
  7. },


打开分享的页面时获取之前分享操作时传递的参数,即路径,并在打开分享的初始化函数中填充路径值options.shareUrl ,

同样,倘若想要在打开分享的页面中进行分享操作的话,然后需要补充分享事件,只是这次跳转的路径指向本身,

并且分享成功时将分享时的路径再次赋值给share_src,


  1. onShareAppMessage(options) {
  2.        var that = this
  3.        var return_url = options.webViewUrl
  4.        var path = 'pages/sharepage/sharepage?shareUrl=' + return_url   //分享成功后跳转回本页面
  5.        console.log(path, options)
  6.        return {
  7.            title: '内嵌网页分享',
  8.            path: path,
  9.            success: function (res) {
  10.                // 转发成功
  11.                wx.showToast({
  12.                    title: "转发成功",
  13.                    icon: 'success',
  14.                    duration: 2000
  15.                })
  16.                that.setData({              
  17.                    share_src: return_url    //再次赋值分享内嵌网页的路径
  18.                })
  19.            },
  20.            fail: function (res) {
  21.                // 转发失败
  22.            }
  23.        }
  24.    },


至此,小程序内嵌网页的分享就完成了。

总结:当本页面执行操作受阻了,不妨添加个页面时候,也许就会有不一样的收获。


如果看不懂就去 Github微信小程序内嵌网页分享项目地址:https://github.com/sennyla/WebchatShare.git


 
反对 0举报 0 收藏 0 打赏 0评论 0
免责声明
• 
本文为会员destoon8发布,欢迎转载,转载请注明原文出处:http://52419.net/news/show-39131.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 
更多>同类destoon教程

入驻

企业入驻成功 可尊享多重特权

入驻热线:17792038992

请手机扫码访问

客服

客服热线:17792038992

小程序

小程序更便捷的查找产品

为您提供专业帮买咨询服务

请用微信扫码

公众号

微信公众号,收获商机

微信扫码关注

顶部