banner
banner
banner
NEWS LETTER

微信小程序-生成二维码scene问题

Scroll down

问题:scene 太长(参数少但长),生成不了小程序码

原因:

  • 使用getUnlimitedQRCode获取无限制的小程序码时,可接受页面参数scene的长度不能超过32位字符

了解BigInt

  • JS 中的 NUmber 类型只能安全地表示-(2^53-1)和(2^53-1)之间的整数
  • 任何超过这个范围的整数值都会丢失精度(四舍五入)
  • 而使用BigInt不会丢失精度,可以运算大整数

使用 JSBI 插件

  • 安装:npm install jsbi –save
  • 用法:JSBI.BigInt()

解决方案

  • 1.先把scene的每个参数JSBI.BigInt()包裹住,防止在转格式的时候丢失精度
  • 2.然后调用.toString(36)转为36进制
    • 因为scene为32位的十进制,所以先转为36进制的.如果不满足可以考虑其他进制
  • 3.然后使用encodeURIComponent(),生成二维码
  • 4.按照分隔符解码和解构赋值得到参数:
    • [a,b,c,d] = decodeURIComponent(params.scene).split(';'),
    • 此时拿到的参数是36进制的还要再转回十进制
  • 5.转为十进制即可

相关文档

其他文章
cover
微信小程序-动态tabbar(底部菜单)
  • 24/11/04
  • 09:57
  • 微信小程序
cover
微信小程序-H5相关问题
  • 24/11/04
  • 09:57
  • 微信小程序
目录导航 置顶
  1. 1. 问题:scene 太长(参数少但长),生成不了小程序码
    1. 1.1. 原因:
    2. 1.2. 了解BigInt
    3. 1.3. 使用 JSBI 插件
    4. 1.4. 解决方案
    5. 1.5. 相关文档
请输入关键词进行搜索