微信web开辟碰到的坑

缓存掌握

http接口数据缓存

一向在做spa,运用内的页面切换没有接口数据缓存的题目,而从运用内切换到外部再回来的话,假如接口地点参数都稳定,那末之前要求过的接口,会运用上一次要求拿到的数据,抓包东西显现要求基础没有发生。

解决要领就是:改改参数,比方加个时候戳。

js/css/img

关于静态资本能够更新文件名(如:文件名加hash),合营gulp,webpack等打包东西都能够完成。

index

尝试过在html中增加http-equiv的meta标签来掌握response header,但在大部份安卓机上无效。
解决办法:在html标签上增加一个不存在的manifest,瑕玷是会形成一个分外的404要求

<html manifest="NOT_EXIST.manifest">

缓存掌握触及到http协定的学问,触及catch control与三种header的用法。https://segmentfault.com/a/11…

音频

自动播放

Android:没题目(版本更新后能够会有自动播放失效的题目,疑心与jssdk的初始化有关)。
iOS:因为苹果的限定必需合营微信接口做处置惩罚。

  • 假如audio标签和audio资本都是静态的,那末只须要在wx.ready中挪用play要领。假如是耽误的自动播放,那末你能够须要在页面加载完成后在ready中挪用一次load

    wx.ready(()=>{
        audio.play();
        // 耽误自动播放
        // audio.load();
    })
  • 假如是静态的audio标签,而资本途径是经由过程接口拿到的,那末就须要把设置资本途径的操纵也放到wx.ready

    wx.ready(()=>{
        audio.src = YOUR_AUDIO_URL;
        audio.play();
    })
  • 假如audio标签是页面加载后动态建立的,那末iOS版的微信想要完成自动播放貌似是不能够的,最少我是没有找到明白的要领,在此谦虚讨教
  • 对iOS音频自动播放的通用解决办法是把音频播放放在用户行动回调中,比方:给window增加一个touchstart的eventListener,在callBack中play

    window.addEventListener('touchstart', function autoPlay() {
      audioElm.play();
      window.removeEventListener('touchstart', autoPlay, true)
    }, true)

wxjssdk

接口权限的猎取

SPA下路由形式只能用hash,config的页面URL不能照顾hash部份

接口挪用距离

资本相干(图片灌音)的接口,挪用时须要有一个最小距离时候,不然会挪用失利,而且不报错,现在我是给了一个100ms的距离,除了在初次灌音(唤起权限弹框)时会偶然返回’too short’,其他接口都能一般运转。

分享

iOS的link不能包括未转码的特别字符,在某些机型上会形成分享失利。
涌现过success回调没法运用HTTPRequest的状况,耽误100ms即可。

二维码辨认题目

网上找到的

  • 二维码图片必需放在img标签里才辨认
  • 一屏内不能涌现两个二维码
  • iOS 6.2.2中二维码的辨认位置要比现实位置高64px(标题栏的高度),要在图片底部加padding。iOS 6.2.4中已修复
  • viewport meta标签的设置,会影响二维码辨认

我试出来的

  • iOS微信客户端内,假如页面链接中含有未转码的特别字符,能够会致使二维码没法辨认

以上

假如碰到新的题目会继承更新

    原文作者:_lih
    原文地址: https://segmentfault.com/a/1190000009731891
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞