后端 php 程序: //判断是否是微信客户端请求(这里的“微信客户端”不含微信小程序以及通过微信小程序打开的网页) // 主要是用于判断是否能获取微信 openid private function is_weixin_visit() { if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) // 微信客户端(可能是微信浏览器和微信小程序) { if(strpos($_SERVER['HTTP_USER_AGENT'], 'miniProgram') !== false) return false; // 通过微信小程序请求的 if(strpos($_SERVER['HTTP_USER_AGENT'], 'Process/appbrand') !== false) return false; // 通过微信小程序中的网页浏览器组件来请求或打开页面的 return true; // 直接通过微信客户端请求或打开页面的 } return false; }
如何判断是哪个微信小程序?背景: 目前我有一个H5页面,需要运行在多个小程序的webview中。目前有个需求是,H5页面中有一个跳转小程序原生页的按钮,只能在小程序A的环境中才能执行原生跳转,因为其它小程序中不存在这个原生页面。问题:目前微信这边有判断是哪个微信小程序的特定标识么? 尝试:我本想在H5页面中执行下边这段代码,如果跳转的是不存在的原生页,会走fail,我在fail中处理。但实际并不会走fail。 wx.miniProgram.navigateTo({ url: '/index/index', success: function(){ //跳转成功回调 }, fail: function(){ // 什么情况执行 fail回调? } });
2021-06-09wx.openBluetoothAdapter 在 iPhone X 、iPhone 6s plus 等手机上,开启蓝牙的状态下任然报 errorCode 为 10001 的错误 https://developers.weixin.qq.com/s/7iMrsYmE7CgI
调用此wx.openBluetoothAdapter的api无效,有解决的办法吗?我公司客户手机是ios XR 系统版本是13.1.3,手机不管是否打开蓝牙,都提示没打开蓝牙,调试才知道每次都进入该wx.openBluetoothAdapter的fail回调函数。其他的手机目前没影响,想问一下是怎么回事,如果是微信的兼容问题,能否回复一下,公司经理每天都在问我 。
2020-04-30但是,解锁后,会把之前的执行完毕,对吗?
setTimeout、setInterval计时器锁屏后停止计时我需要在app.js中每隔一段时间就请求一次网络数据,但我发现当我手机锁屏之后,通过setTimeout或setInterval得到的计时器就暂停计时了,直到我重新唤醒手机后才开始计时。但如果我只是把小程序切换到后台,不锁屏,则计时器照常工作。请问有什么解决办法吗?
2018-10-29苹果上没发现有这个现象,但安卓绝大多数都有这个现象。 这个问题的关键是两点:1. 安卓手机;2. 打开二维码扫描器后需要等 12s或以上时间再对准某二维码进行扫描。
扫描二维码后显示地图出现黑屏的BUG- 当前 Bug 的表现(可附上截图) 扫完二维码后地图区域显示黑屏。 [图片] [图片] - 预期表现 扫完二维码后地图区域应该显示地图。 - 复现路径 当使用 hidden={{true}} 属性隐藏地图之后,打开二维码扫描器(打开了摄像头,但不对准二维码),等待约 12秒或以上,再对准某二维码完成扫描,扫完二维码后 通过 hidden={{false}}显示地图。这时,原地图区域不会显示,而是黑屏。使用 setTimeout 延时执行显示地图的程序也黑屏。 - 提供一个最简复现 Demo 【wxml】 <map hidden='{{!map_display}}'> <cover-view bindtap='csScan'>扫描二维码</cover-view> </map> 【wxcss】 map{ width: 100%; height:500px; } map cover-view{ background: #ccc; width: 120px; height: 30px; padding-top: 20px; text-align: center;} 【js】 var that = null; Page({ data: { map_display: true }, onLoad() { that = this; }, csScan(){ that.setData({ map_display:false }); wx.scanCode({ onlyFromCamera: true, success: function (res) { wx.showToast({ title: res.result }); /* // 测试 setTimeout(function () { that.setData({ map_display: true }); }, 5000); return; */ that.setData({ map_display:true }); }, fail: function (e) { console.log('二维码扫描出错'); } }); } });
2018-10-26已解决! 小程序开发中由于 es6 至少 ios 9.1 不支持,所以如果已经在项目中使用了较多了es6或必须使用es6,则需要勾选 es6 转 es5,才能解决前述兼容问题。但若有使用 async await 会报 regeneratorRuntime is not defined 错误。解决方法如下: 下载 facebook 的 regenerator 库 取 regenerator-master/packages/regenerator-runtime 目录中的 runtime.js 文件放入你的项目中 在你有使用 async await 的文件前面引入这个 runtime.js 文件即可,引入代码如: const regeneratorRuntime = require('../../utils/runtime.js'); 就这样,解决了!
ES6 await, async 用不了ES6 await, async 用不了,报“ regeneratorRuntime is not defined ”
2018-10-11已解决! 小程序开发中由于 es6 至少 ios 9.1 不支持,所以如果已经在项目中使用了较多了es6或必须使用es6,则需要勾选 es6 转 es5,才能解决前述兼容问题。但若有使用 async await 会报 regeneratorRuntime is not defined 错误。解决方法如下: 下载 facebook 的 regenerator 库 取 regenerator-master/packages/regenerator-runtime 目录中的 runtime.js 文件放入你的项目中 在你有使用 async await 的文件前面引入这个 runtime.js 文件即可,引入代码如: const regeneratorRuntime = require('../../utils/runtime.js'); 就这样,解决了!
es6支持错误regeneratorRuntime is not definedPromise现在可以使用了,但是yield 关键字被转码后,是这样的: var t1 = regeneratorRuntime.mark(function t1() { var l; return regeneratorRuntime.wrap(function t1$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return t; case 2: l = _context.sent; console.log(l); case 4: case 'end': return _context.stop(); } } }, t1, this); }); 代码执行报错: WAService.js:3 thirdScriptError regeneratorRuntime is not defined;at "pages/index/index" page lifeCycleMethod onLoad function ReferenceError: regeneratorRuntime is not defined 开发工具和手机上都这样
2018-10-11已解决! 小程序开发中由于 es6 至少 ios 9.1 不支持,所以如果已经在项目中使用了较多了es6或必须使用es6,则需要勾选 es6 转 es5,才能解决前述兼容问题。但若有使用 async await 会报 regeneratorRuntime is not defined 错误。解决方法如下: 下载 facebook 的 regenerator 库 取 regenerator-master/packages/regenerator-runtime 目录中的 runtime.js 文件放入你的项目中 在你有使用 async await 的文件前面引入这个 runtime.js 文件即可,引入代码如: const regeneratorRuntime = require('../../utils/runtime.js'); 就这样,解决了!
小程序使用async函数后开启es6转码后报错WAService.js:3 thirdScriptError regeneratorRuntime is not defined;at pages/dome1/dome1 page test function ReferenceError: regeneratorRuntime is not defined at http://127.0.0.1:9973/appservice/pages/dome1/dome1.js:47:50 at e.test (http://127.0.0.1:9973/appservice/pages/dome1/dome1.js:85:6) at e.<anonymous> (http://127.0.0.1:9973/appservice/__dev__/WAService.js:15:4257) at e.a (http://127.0.0.1:9973/appservice/__dev__/WAService.js:14:31107) at K (http://127.0.0.1:9973/appservice/__dev__/WAService.js:14:25691) at Function.<anonymous> (http://127.0.0.1:9973/appservice/__dev__/WAService.js:14:27280) at http://127.0.0.1:9973/appservice/__dev__/WAService.js:15:647 at http://127.0.0.1:9973/appservice/__dev__/WAService.js:6:8176 at e.(anonymous function) (http://127.0.0.1:9973/appservice/__dev__/WAService.js:3:31751) at d (http://127.0.0.1:9973/appservice/appservice:1100:8304) ----------------------------------------------------------------------------------- let start = async function () { try{ that.write("start"); await sleep(3000) that.write("end"); }catch(err){ console.log(err) } } start();
2018-10-11