关于首次扫描普通二维码打开小程序onLoad获取参数为undef
2023-03-15 本文已影响0人
烤奶要加冰
使用普通二维码打开小程序的场景,主要是为了记录是用户都是扫描哪一个二维码进入的。
1. 配置扫普通链接二维码打开小程序
打开微信公众平台 > 开发管理 > 开发设置 > 添加普通二维码地址
image.png
2. 二维码跳转规则配置
详细内容参照官方文档
3. 二维码内容获取(重点)
下面是官方文档中给出的代码示例
Page({
onLoad(query) {
const q = decodeURIComponent(query.q) // 获取到二维码原始链接内容
const scancode_time = parseInt(query.scancode_time) // 获取用户扫码时间 UNIX 时间戳
}
})
在扫码跳转小程序成功后,onLoad
函数中可以接收到二维码中的内容
例如,二维码中内容为:https://www.qq.com/a/?id=123
则在小程序中的query.q
的值为:'https%3A%2F%2Fwww.qq.com%2Fa%2F%3Fid%3D123'
使用decodeURIComponent
解码后得到原来的数据。
但是
在测试中发现,首次扫码打开小程序后,query
的值为undefined
,当切换小程序到后台之后重新扫码,之后的query
的值均是二维码中的内容。
解决方法
将const q = decodeURIComponent(query.q)
修改成以下内容,此时options.q
的值就是为二维码中的内容
var pages = getCurrentPages();
var page = pages[pages.length - 1];
const options = page.options;
完整代码
Page({
onLoad(query) {
var pages = getCurrentPages();
var page = pages[pages.length - 1];
const options = page.options; // 获取到二维码原始链接内容
const scancode_time = parseInt(options.scancode_time) // 获取用户扫码时间 UNIX 时间戳
}
})