h5移动端配合微信sdk常用的9个工具函数

1.url参数转换成对象

将query参数转换层对象

/**
 * url参数转换成对象
 * @param {*} url 
 * @returns 
 */
function queryURLparamsRegEs6(url) {
    let obj = {};
    let reg = /([^?=&]+)=([^?=&]+)/g;
    url.replace(reg, (...arg) => {
        obj[arg[1]] = arg[2];
    });
    return obj;
}

2.将对象拼接成url参数

将对象拼接成query参数

/**
 * 将对象拼接成url参数
 * @param {*} data 
 * @returns 
 */
function paramFormateUrl(data) {
    let url = '';
    // 遍历data对象,取出需要的参数
    for (let k in data) {
      // 如果当前value为undefined ,则返回空字符串
      let value = data[k] !== undefined ? data[k] : '';
      // 得到参数,并且拼接参数,为下一步拼接到url后面做准备
      url += '&' + k + '=' + value;
    }
  // 如果url存在,则去除首字符并返回,因为主函数已经包含了'&',否则返回空串
  return url ? url.substring(1) : '';
}

3.根据身份证号返回年龄

根据身份证号返回年龄

/**
 * 根据身份证号返回年龄
 * @param {*} value
 * @param {*} lang
 * @returns
 */

 function GetAge(identityCard) {
   console.log("identityCard",identityCard,identityCard.length);
  var len = (identityCard + "").length;
  if (len === 0) {
      return 0;
  } else {
      if ((len !== 15) && (len !== 18))//身份证号码只能为15位或18位其它不合法
      {
          return 0;
      }
  }
  var strBirthday = "";
  if (len === 18)//处理18位的身份证号码从号码中得到生日和性别代码
  {
      strBirthday = identityCard.substr(6, 4) + "/" + identityCard.substr(10, 2) + "/" + identityCard.substr(12, 2);
  }
  if (len === 15) {
      strBirthday = "19" + identityCard.substr(6, 2) + "/" + identityCard.substr(8, 2) + "/" + identityCard.substr(10, 2);
  }
  //时间字符串里,必须是“/”
  var birthDate = new Date(strBirthday);
  var nowDateTime = new Date();
  var age = nowDateTime.getFullYear() - birthDate.getFullYear();
  //再考虑月、天的因素;.getMonth()获取的是从0开始的,这里进行比较,不需要加1
  if (nowDateTime.getMonth() < birthDate.getMonth() || (nowDateTime.getMonth() === birthDate.getMonth() && nowDateTime.getDate() < birthDate.getDate())) {
      age--;
  }
  return age;
}

4.微信功能扫一扫

微信功能扫一扫

/**
 * 微信功能扫一扫
 * @param {*} params
 * @returns
 */
// function WxReady(){
//   jWeixin.ready({

//   })
// }
function scanCode(data) {
  const { needResults = "0", scanTypes = ["qrCode", "barCode"] } = data || {};
  return new Promise((resolve, reject) => {
    jWeixin.scanQRCode({
      desc: "scanQRCode desc",
      needResult: needResults, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
      scanType: scanTypes, // 可以指定扫二维码还是一维码,默认二者都有
      success: function (res) {
        resolve(res);
        var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
        console.log(result);
       // alert("res", JSON.stringify(res));
      },
      fail: function (err) {
        reject(err);
      },
    });
  });
}

5.获取地理位置

获取地理位置

/**
 * 获取地理位置
 */
function location(data) {
  // gps坐标 'wgs84',火星坐标'gcj02'
  const { type = "gcj02" } = data || {};
  return new Promise((resolve, reject) => {
    jWeixin.getLocation({
      type: type, // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
      success: function (res) {
        jWeixin.openLocation({
          latitude: res.latitude, // 纬度,浮点数,范围为90 ~ -90
          longitude: res.longitude, // 经度,浮点数,范围为180 ~ -180。
          name: "未知", // 位置名
          address: "zz", // 地址详情说明
          scale: 1, // 地图缩放级别,整型值,范围从1~28。默认为最大
          infoUrl: "www.baidu.com", // 在查看位置界面底部显示的超链接,可点击跳转
        });
        resolve();
      },
      fail: function (res) {
        reject(res);
      },
    });
  });
}

6.微信获取设备信息

微信获取设备信息

/**
 * 设备信息
 */
function NetworkType() {
  return new Promise((resolve, reject) => {
    jWeixin.getNetworkType({
      success: function (res) {
        resolve(res.networkType); // 返回网络类型2g,3g,4g,wifi
      },
      fail: function (err) {
        reject(err);
      },
    });
  });
}

7.微信分享到朋友圈或者qq功能

7.1:分享到朋友或者QQ。 需要在点击按钮之前调用jWeixin.ready(funciton(){})

/**
 * 分享到朋友或者QQ。
 * 需要在点击按钮之前调用jWeixin.ready(funciton(){})
 */
function MessageShareData(data) {
  const { title = "", desc = "", link = "", imgUrl = "" } = data || {};
  jWeixin.ready(() => {
    jWeixin.updateAppMessageShareData({
      title: title, // 分享标题
      desc: desc, // 分享描述
      link: link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: imgUrl, // 分享图标
      success: function (res) {
        // 设置成功
        console.log(res);
      },
      fail: function (err) {
        console.log(err);
      },
    });
  });
}

7.2:分享到朋友或者QQ。 分享到朋友圈或者QQ空间

/**
 * 分享到朋友圈或者QQ空间
 * @param {*} data
 */
function TimelineShareData(data) {
  const { title = "", link = "", imgUrl = "" } = data || {};
  jWeixin.ready(() => {
    jWeixin.updateTimelineShareData({
      title: title, // 分享标题
      link: link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: imgUrl, // 分享图标
      success: function (res) {
        // 设置成功
        console.log(res);
      },
    });
  });
}

8.发送一个微信支付请求

发送一个微信支付请求

/**
 * 发送一个微信支付请求
 * @param {*} data
 * @returns
 */
function WXPay(data) {
  const {
    timestamp,
    nonceStr,
    packages = 'prepay_id="1234567"',
    signType,
    paySign,
  } = data || {};
  return new Promise((resolve, reject) => {
    jWeixin.chooseWXPay({
      timestamp: timestamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
      nonceStr: nonceStr, // 支付签名随机串,不长于 32 位
      package: packages, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
      signType: signType, // 微信支付V3的传入RSA,微信支付V2的传入格式与V2统一下单的签名格式保持一致
      paySign: paySign, // 支付签名
      success: function (res) {
        // 支付成功后的回调函数
        resolve(res);
      },
      error: function (err) {
        reject(err);
      },
    });
  });
}

9.新页面全屏预览图片功能

新页面全屏预览图片功能

/**
 * 新页面全屏预览图片功能
 * @param {*} data
 * @returns
 */
function imagePreview(data) {
  const { urls = [""], showmenu = true, current = urls[0] } = data || {};
  return new Promise((resolve, reject) => {
    jWeixin.previewImage({
      urls: urls, //需要预览的图片链接链表
      showmenu: showmenu, //显示长按菜单
      current: current, //当前显示图片的链接
      success: function (res) {
        // 成功后的回调函数
        resolve(res);
      },
      error: function (err) {
        reject(err);
      },
    });
  });
}
function WxgetLocalImgData() {
  jWeixin.chooseImage({
    count:1,
    sizeType:['original','compressed'],
    sourceType:['album', 'camera'],
    success:function(res){
      let localId = res.localIds[0];
      jWeixin.getLocalImgData({
        localId:localId,
        success: function (res) {
          let localData = res.localData;
          // if(localData.indexOf("data:image") != 0){
          //   localData = 'data:image/jpeg;base64,' + localData
          // }
          // localData = localData.replace(/\r|\n/g,'').replace('data:image/jpg','data:image/jpeg');
          // _this.src = localData;
          console.log(res , localData);
        },
        fail: function (err) {
          console.log(err);
        },
      });
    }
  });
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: H5跳转到微信小程序是一种通过在H5页面中添加跳转链接实现从H5页面跳转到微信小程序的功能。下面是一个H5跳转到微信小程序的demo: 1. 首先,在H5页面中添加一个跳转到微信小程序的按钮或链接。可以使用HTML的<a>标签和href属性来实现。例如: ```html <a href="weixin://dl/business/?appid=wxappid">点击跳转到微信小程序</a> ``` 在上面的代码中,weixin://dl/business/ 是微信用于跳转到小程序的协议。 2. 将wxappid替换为你要跳转的微信小程序的AppID。可以在微信公众平台上的小程序管理后台找到小程序的AppID。 3. 当用户点击该按钮或链接时,系统会自动检测用户的设备是否安装了微信小程序。如果安装了,会自动打开小程序;如果未安装,会跳转到微信的下载页面。 需要注意的是,以上方法只适用于在微信内部打开的H5页面。在其他浏览器或App中打开的H5页面无法使用该方法跳转到微信小程序。 另外,如果你是小程序开发者,还可以使用微信小程序提供的API实现跳转到其他小程序的功能。具体的实现方法可以参考微信小程序的开发文档。 ### 回答2: 在实现H5跳转到微信小程序的demo中,我们可以通过以下步骤来完成: 1. 首先,我们需要在H5页面中引入微信提供的JS-SDK库文件,可以通过以下代码实现: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 2. 然后,我们需要在微信开放平台上注册并获取微信小程序的AppID。将获取到的AppID填写在H5页面的`wx.config`配置中,具体代码如下: ```javascript wx.config({ appId: 'YourAppID', timestamp: '', nonceStr: '', signature: '', jsApiList: [] }); ``` 在`jsApiList`中填写小程序提供的JS接口,比如跳转到小程序的`launchMiniProgram`接口。 3. 接下来,我们需要在H5页面中添加一个跳转按钮,并绑定点击事件。在点击事件中调用`wx.miniProgram`的`navigateBack`方法来实现跳转到小程序,具体代码如下: ```javascript document.getElementById('jumpBtn').addEventListener('click', function() { wx.miniProgram.navigateTo({ url: '/pages/index/index' }); }); ``` 其中,`url`参数填写要跳转到的小程序页面路径。 4. 最后,在微信小程序的对应页面中添加一个返回按钮,点击事件中调用`wx.miniProgram`的`navigateBack`方法来返回到H5页面,具体代码如下: ```javascript wx.miniProgram.navigateBack(); ``` 通过以上步骤,我们就可以实现H5页面跳转到微信小程序的demo了。当用户点击H5页面中的跳转按钮时,就会跳转到指定的小程序页面;而在小程序页面中点击返回按钮,则会返回到H5页面。 ### 回答3: H5跳转到微信小程序的实现方式有多种。以下是一种具体的实现示例: 首先,在H5页面中,可以通过添加一个按钮或链接来实现跳转到微信小程序的功能。例如,在HTML代码中添加一个按钮元素,然后使用JavaScript代码来监听按钮的点击事件。 HTML代码示例: ```html <button id="jumpButton">跳转到小程序</button> ``` 接着,在JavaScript代码中,通过调用微信小程序接口`wx.miniProgram.navigateTo`来实现跳转到指定的小程序页面。需要在button的点击事件处理函数中编写相关代码。 JavaScript代码示例: ```javascript document.getElementById('jumpButton').addEventListener('click', function() { // 跳转到小程序的页面路径,在小程序开发工具中可以找到 var path = '/pages/index/index'; // 跳转时携带的参数,在小程序中可以通过options参数获取 var params = { id: 123 }; // 调用微信小程序接口跳转到指定页面 wx.miniProgram.navigateTo({ url: path + '?id=' + params.id }); }); ``` 在以上示例中,点击按钮后,会调用`wx.miniProgram.navigateTo`接口,携带指定的页面路径和参数跳转到小程序的页面。可以根据实际需求修改`path`和`params`变量的值来实现跳转到不同的小程序页面和传递不同的参数。 需要注意的是,以上示例中的代码是基于微信小程序的开发接口实现的,所以要确保在微信浏览器中打开H5页面才能正常跳转到微信小程序。此外,需要提前在微信小程序的配置文件中进行相应的设置,以确保能正确跳转到指定小程序页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值