一、通用问题

scroll-view 不滑动问题

开发微信小程序的时候都会遇到scroll-view不滑动的情况,造成scroll-view不滑动的原因有很多,横向和竖向不滑动的原因也不同
解决方案:
1 竖直方向
对于竖直方向的滑动,造成原因如下:

① scroll-view 的 scroll-y 是否为 true

② scroll-view 必须设置具体的高度,如果没有设置高度,或者直接继承父元素高度100%,那么 scroll-view竖直方向将无效。我们必须动态获取scroll-height因为在不同型号手机,都要达到完美的效果

如何正确获取scroll-view高度

情况一 scroll-view 在中间的情况:

  1. const scrollHeight = windowHeight - scrollTop - scrollBottom

情况二 scroll-view 靠底部的情况 :

  1. const scrollHeight = windowHeight - scrollTop

③ 检查 scroll-view 是否设置了 overflow-y: auto; 等滑动属性。

  1. <scroll-view :scroll-y="true" class="scroll_box" >
  2. <!-- 此处省略很多东西 -->
  3. </scroll-view>
  4. .scroll_box{
  5. height:500px;
  6. overflow-y: auto;
  7. }

2 水平方向
对于水平方向的滑动,造成原因如下:

① scroll-view 的 scroll-x 是否为 true
js <scroll-view :scroll-x="true" > <!-- 此处省略很多东西 --> </scroll-view>
② 不要设置 display:flex; 等情况 ,让子元素设置 display:inline-block

③ scroll-view 设置样式 white-space: nowrap;

  1. <scroll-view :scroll-x="true" style="white-space: nowrap;" ></scroll-view>

微信小程序跳转微信小程序,第二次跳转无效

有一个小程序跳转另外一个小程序的场景,第一次的时候没有任何问题,但是当从跳转的目标小程序,返回到当前小程序之后,第二次跳转的时候,发现跳转功能失效了,无法再次跳转。我们的跳转逻辑是写在一个小程序过渡页面的生命周期中的。

分析原因
微信文档有这么一句话,需要用户触发跳转,从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序 最后发现是第二次跳转的过程中,由于不是用户主动行为(点击事件等人为主动的行为),而是又过渡页面的生命周期执行的跳转小程序,所以微信被判定无效的跳转,就会直接走跳转失败的逻辑,webview里面的点击跳转事件不算是用户的主动行为.

解决方案
所以我们在过渡页进行一判断,如果是第二次跳转,先弹出弹窗,让用户主动点击,触发用户主动行为。然后再跳转小程序。

  1. wx.navigateToMiniProgram({
  2. appId:'appId',
  3. path:'路径',
  4. extraData:'需要传递给小程序的数据',
  5. success(){}, // 成功回调
  6. fail(){}, //失败回调
  7. complete(){} //无论成功/失败,都会执行完成方法。
  8. })

二、IOS 问题

微信小程序1rpx border ios真机显示不全问题

微信小程序在iphone低版本手机(iphone6 ,6p),如果多个视图容器排列(水平和竖直方向都会存在),可能会出现个别边框显示不全的问题。
分析问题
当标签的父容器宽度(单位rpx)÷2的值为偶数或偶数.5的时候会出现该bug,那么我们可以推到出用200.52=401,3022=604等等都会重现这个bug

解决问题
放一个1rpx的元素占位

  1. <view class="father" >
  2. <view class="hold" />
  3. <view class="item" >商品1</view>
  4. <view class="item" >商品2</view>
  5. <view class="item" >商品3</view>
  6. <view class="item" >商品4</view>
  7. </view>
  8. .hold{
  9. width: 1rpx;
  10. height: 100%;
  11. float: left;
  12. }

微信scroll-view内部定位元素抖动问题

ios环境下,scroll-view标签里面如果有,position:absolute的元素。当scroll-view滑动的过程中,定位的元素会出现抖动的情况。

解决问题
把定位的元素从scroll-view拿出来。

  1. <view class="box" >
  2. <scroll-view class="scroll_box" :scroll-y="true" >
  3. </scroll-view>
  4. <view class="current" >我是定位元素</view>
  5. </view>
  6. .box{
  7. position:relative;
  8. }
  9. .scroll_box{
  10. height:500px;
  11. overflow-y: auto;
  12. }
  13. .current{
  14. position:absolute;
  15. left:0;
  16. top:0;
  17. }

三、Android 问题

打开webview被微信拦截问题

分析问题
在微信小程序里开发webview h5的时候,在配置了合法域名,域名备案的情况下,出现了 ios 上正常打开,但是在 android 手机上出现了被拦截的情况。而且这些情况都是因为打开webview的 url中存在汉字的情况。

解决问题
安卓手机对于 http / https url如果存在汉字,需要用encodeURI对汉字进行编码处理就可以了。

  1. <web-view :src="webViewUrl" @message="handerMessage" />
  2. this.webViewUrl = commonUrl + '/pages/goods/index?name=' + encodeURI('外星人')
  3. // 接口请求
  4. wx.request({
  5. url: commonUrl + '/pages/goods/index?name=' + encodeURI('外星人'),
  6. method: "GET",
  7. })