写小程序的时候都会遇到扫码参数和小程序内跳转参数要离开解决的问题,但实际上参数和解决的形式都是一样的,这里封装一种办法,将扫码参数间接放到options上面,这样就不须要离开独立解决,缩小冗余代码减少代码可读性和扩展性。
// 写在 app.js App构造函数之前// 微信小程序const originalPage = Page Page = function (app) { let onload = app.onLoad app.onLoad = function(options) { if (options.q) { let query = initParm(decodeURIComponent(options.q)) for(let item in query) { options[item] = query[item] } } onload.call(this, options) } return originalPage(app)}// 支付宝小程序const originalPage = Page Page = function (app) { let onload = app.onLoad app.onLoad = function(options) { const qrCode = getApp().globalData.query ? getApp().globalData.query.qrCode : undefined if (qrCode) { let query = initParm(qrCode) for(let item in query) { options[item] = query[item] } } onload.call(this, options) } return originalPage(app)}// 工具函数function initParm(parm) { let queryStr = parm.split("?")[1] let queryObj = {} let result = '' if(queryStr) { if(queryStr.indexOf('&') >= 0) { let query = queryStr.split('&') for(let i = 0; i < query.length; i++) { result = query[i].split('=') queryObj[result[0]] = result[1] } } else { result = queryStr.split('=') queryObj[result[0]] = result[1] } } return queryObj}