小程序
小游戏
企业微信
微信支付
扫描小程序码分享
复现流程:真机调试 => 右上角更多菜单 => 转发给朋友(不需要真的分享出去);此刻就可以看到错误了
iPhone 设备 iOS13 及其以上不会出现该问题
设备信息:iPhone 7 Plus【iOS 12.1.4】
代码片段截图:
错误内容截图:
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
小程序canvas不支持真机调试。。。文档也不说明一下,有点坑。。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
解决了,加定时器就可以!
我的代码里 canvas 是用户选择图片后根据图片数量 imageList 渲染的,然后获取 canvas 也是 null,之前的代码如下:
wx.getImageInfo({ src: imageList[i], success: (res) => { console.log('%c getImageInfo: ', 'background-color: pink', res) wx.createSelectorQuery() .select(`#${canvasId}`) .fields({ node: true, size: true }) .exec((res2) => { console.log('%c res2[0]: ', 'background-color: pink', res2[0]) // null }) }
canvas 是根据 imageList 渲染的,我怀疑是获取图片后 canvas 并没有第一时间渲染,或者在我 select 的时候还没有渲染完,所以加了定时器,把 select 动作往后放。
wx.getImageInfo({ src: imageList[i], success: (res) => { console.log('%c getImageInfo: ', 'background-color: pink', res) setTimeout(() => { wx.createSelectorQuery() .select(`#${canvasId}`) .fields({ node: true, size: true }) .exec((res2) => { console.log('%c res2[0]: ', 'background-color: pink', res2[0]) // res2[0] 可以获取到了 }, 0); }) }
解决!
-------------------------------------------------
这个回复的编辑器可真tm难用!!!!!
最后怎么写的,我也想像你这么写,把createSelectorQuery获取到的组件作为函数返回值
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
小程序canvas不支持真机调试。。。文档也不说明一下,有点坑。。
解决了,加定时器就可以!
我的代码里 canvas 是用户选择图片后根据图片数量 imageList 渲染的,然后获取 canvas 也是 null,之前的代码如下:
wx.getImageInfo({ src: imageList[i], success: (res) => { console.log('%c getImageInfo: ', 'background-color: pink', res) wx.createSelectorQuery() .select(`#${canvasId}`) .fields({ node: true, size: true }) .exec((res2) => { console.log('%c res2[0]: ', 'background-color: pink', res2[0]) // null }) }
canvas 是根据 imageList 渲染的,我怀疑是获取图片后 canvas 并没有第一时间渲染,或者在我 select 的时候还没有渲染完,所以加了定时器,把 select 动作往后放。
wx.getImageInfo({ src: imageList[i], success: (res) => { console.log('%c getImageInfo: ', 'background-color: pink', res) setTimeout(() => { wx.createSelectorQuery() .select(`#${canvasId}`) .fields({ node: true, size: true }) .exec((res2) => { console.log('%c res2[0]: ', 'background-color: pink', res2[0]) // res2[0] 可以获取到了 }, 0); }) }
解决!
-------------------------------------------------
这个回复的编辑器可真tm难用!!!!!
最后怎么写的,我也想像你这么写,把createSelectorQuery获取到的组件作为函数返回值
function getcanvas(callback){
wx.createSelectorQuery()
.select('#myCanvas')
.fields({
node: true,
size: true
})
.exec((res) => {
callback(res[0])
})
}
当需要引用getcanvas时这么写
function drawcanvas(){
getcanvas((res0)=>{
const canvas=res0.node
})
}
function drawcanvas_2(){
getcanvas((res0)=>{
const canvas=res0.node
})
}