获取小程序启动时的参数 使用限制 基础库 1.21.0 或更高版本;支付宝客户端 10.1.75 或更高版本,若版本较低,建议做 兼容处理。 与 app.onlaunch 的回调参数一致。 使用说明 部分版本在无 referrerinfo 的时候会返回 undefined,建议使用 options.referrerinfo & options.referrerinfo.appid 进行判断。 在 app 层面(app.js 中), 通过 onlaunch /onshow 事件获取启动参数 如果冷启动,则会在 onlaunch(options) 中获得参数;如果为热启动,则会在 onshow(options) 中获得参数。建议冷启动中获取不了的时候,再尝试在 onshow 中获取,若还是获取不了,则可判定为没有拿到该参数。 注意: 小程序已经上架,可直接使用链接跳转上架版本测试。 小程序未上架过版本,可通过 开发版/体验版 进行测试,详情可查看 调试跳转未上线小程序版本(开发版/体验版)。 示例代码 onlaunch(options) { my.alert({ content:json.stringify(options.query.key) }) console.log(json.stringify(options)) }, onshow(options) { my.alert({ content:json.stringify(options.query.key) }) console.log(json.stringify(options)) }, 在页面层面(page.js中),通过 my.getlaunchoptionssync 获取启动参数 index.js 信息 page({ onload: function() { let options = my.getlaunchoptionssync(); console.log(options) } }) 参数说明 返回值属性 类型 说明 query object 当前小程序的 query,从启动参数的 query 字段解析而来。 注意:若没有启动参数,则不会返回 query 参数。 scene number 启动小程序的 场景值。 path string 当前小程序的页面地址,从启动参数 page 字段解析而来,page 忽略时默认为j9九游会登录入口首页新版首页。 referrerinfo object 来源消息。 referrerinfo 子属性 属性 类型 说明 appid string 来源小程序。 sourceserviceid string 来源插件,当处于插件运行模式时可见。 注意:基础库 1.11.0 版本开始支持。 extradata object 来源小程序传过来的数据。 获取小程序页面参数 页面参数指的是在 路由类api 的 url 后拼接,如:pages/index/index?key1=value1&key2=value2。 通过scheme跳转到 小程序/ide添加编译模式调试 等其它场景下,也是相同的获取逻辑。 示例代码 // 跳转小程序示例代码 my.navigatetominiprogram({ appid: 'xxxxxxxxxxxxxxx', // 16 位 path: 'pages/index/index?p=1&q=2', query: { a: 'foo', b: 'bar' }, extradata: { x: { y: 'z' }, }, success: () => { console.log('navigatetominiprogram success'); }, fail: (res) => { my.alert({ title: 'navigatetominiprogram fail', content: json.stringify(res), }); } }); // 目标小程序页面层面(page.js)获取页面参数 page({ onload(pageparam) { //获取页面路径后拼接参数:path query: { a: 'foo',b: 'bar'} console.log('path query:', pageparam); // path query: { p: 1, q: 2 } //页面中也可以获取query参数:query: { a: 'foo',b: 'bar'} let querytest = my.getlaunchoptionssync().query //{ a: 'foo',b: 'bar'} my.alert({ title:'query参数', content: querytest, }); }, }); //目标小程序app层面(app.js)获取query参数和extradata参数 app({ onlaunch(options) { my.alert({ title:"onlaunch参数", content: options, }); const { query, referrerinfo: { extradata } = {} } = options; console.log('query:', query); // query: { a: 'foo', b: 'bar' } console.log('extradata:', extradata); // extradata: { x: { y: 'z' } } } }); 获取小程序关联普通二维码参数 获取二维码码值请在小程序 app.js 文件的 app() 的 onlaunch() 方法中使用 options.query 获取。 说明:代码只能获取二维码码值,自定义参数值请自行获取。关联普通二维码创建测试详细流程可查看文档:关联普通二维码。 示例代码 onlaunch(options){ my.alert({ title: 'app onlaunch', content: json.stringify(options), success: (res) => { //成功处理代码段 }, }); //获取关联普通二维码的码值,放到全局变量qrcode中 if (options.query && options.query.qrcode) { let scene = decodeuricomponent(options.query.qrcode);// http://5de844c.ngrok.io/xxx?a=cc&ccs=sxxxx let temp = scene.split('?') let test = temp[1].split('&'); console.log("temp:",temp[1]);// temp: a=cc&ccs=sxxxx console.log("test:",test[0]);// test: a=cc console.log("test:",test[1]);// test: ccs=sxxxx } } 参数说明 返回值参数名 描述 path 当前路径。若没有填写目标页面,那么当前路径为j9九游会登录入口首页新版首页(如下图);若填写则返回目标页面的路径。 qrcode 二维码码值。 相关参考 小程序scheme链接介绍 ide配置/获取全局参数和页面参数(启动参数) 小程序全局 / 页面参数设置以及解析细节
第一次打开小程序(冷启动)获取小程序启动参数需要在小程序app.js文件app()的onlaunch(options)监听小程序初始化函数中使用options.query获取,获取到值后,可以设置全局变量,使用页面通过getapp()方式获取。注意:1.不能在页面page的onload函数中获取。2.小程序在后台被用 schema 打开(热启动),需要从 onshow(options) 监听小程序显示函数中获取 options.query3.onlaunch()是app()的函数,页面page()中没有,注意不要写到page()中。4.query启动参数在拼接到跳转链接时需要urlencode,不然有可能导致获取参数不全。如:&query=a=123
可以参考官方文档: 关于onlaunch和onshow的说明。
如何获取小程序当前页面路径 getcurrentpages :json.stringify(getcurrentpages()[n].__proto__.route),可以获取到页面路径(n 为页面数组栈中页面对象所在序号,最大值为当前页)。 说明:n 对应 getcurrentpages().length-1。 page.route:page 路径,对应 app.json 中配置的路径值,类型为 string。这是一个只读属性。 获取示例 //this指向当前page, this.route即可获取到当前页面的路径值。 console.log(this.route) 小程序如何判断页面来源 小程序支持页面带参跳转,可以在跳转时加入自定义参数作为跳转标识,然后在被跳转页面中获取参数从而判断是从小程序中哪个页面跳转来的。 页面之间跳转 my.navigateto 可以直接在 url 后拼接带参数跳转;从 page/index 的 onload 函数的 query 中读取 xx。 跳转示例: my.navigateto({url:'/page/index?xx=1'}) getcurrentpages :json.stringify(getcurrentpages()[n].__proto__.route),可以获取到页面路径(n 为页面数组栈中页面对象所在序号,最大值为当前页),既n-1(对应getcurrentpages().length-2)为上一页页面栈。 注意:如果跳转时使用的是关闭页面栈的方式,获取的路径不会是上一页,而是没有被销毁的上一个页面栈,因此不建议这样来判断。