Skip to content

常见问题

小程序绘制海报图异常

问题:第一次绘制海报图时可以正常绘制,以相同参数第二次绘制就无法绘制成功

Issue:https://developers.weixin.qq.com/community/develop/doc/0002a0067a0b407025f0d07686bc00?commentid=00048a806cc4889222f06fdb86c0

解决方案:

第一次绘制后将图片缓存下来,如果参数相同则直接展示图片,不相同时再重新绘制

浏览器兼容问题

360浏览器兼容模式下白屏

解决方案: 增加meta标签设置默认加载内核方式为极速模式 <meta name="renderer" content="webkit">

其他问题

  1. 字体文件在兼容模式下不支持.ttf,需要转化为.eot后缀的文件
  2. 代码需要编译为es5.

setTimeout执行异常

Chrome, Safari, Firefox 在内的浏览器其内部以32位带符号整数存储延时。这就会导致如果一个延时(delay)大于 2147483647 毫秒 (大约24.8 天)时就会溢出,导致定时器将会被立即执行。 dealy 的最大值为 2^31 = 2147483648

解决方案:动态刷新计时器

javascript
let endTimer = null;

function listenerEnd(now, endDate){
  if (endDate && now <= endDate) {
    const endDuration = endDate - now;

    const day = 1000 * 60 * 60 * 24;

    let dealy = endDuration;
    if (endDuration >= day) {
      dealy = day;
    }

    clearTimeout(endTimer)

    endTimer = setTimeout(() => {
      if (Date.now() <= endDate) {
        listenerEnd(Date.now(), endDate)
      } else {
        closeHandle()
      }
    }, dealy)
  }
}