收藏
回答

最近(2020年5月底-6月初)苹果手机用户频繁出现微信闪退问题(已自行解决)

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug iOS iOS 13.4.1 iPhone 6s Plus 7.0.12

在一个拥有17个输入框input字段的表单页面,用bindinput和bindblur获取字段值,整个页面只有两处wx:if。这些input输入框类似这样:<input type="text" class="weui-input" name="x" placeholder="..." value="{{x}}" bindblur="{{这里的处理函数会同步data.x的值}}" />,莫非是因为bindblur里同步修改了data.x,同时渲染到value="{{x}}"上,导致了太多什么隐蔽的处理?

同样的页面在此之前稳定运行了一年多,只是最近两周,苹果用户频繁反馈出现闪退现象,从反馈的录频来看,闪退出现在从一个Input失去焦点,切换到另外一个input获得焦点时,整个微信毫无提示的闪退。我们想了各种方法尝试解决,但问题依旧,这导致我们的用户怨声载道!

————————

以上为原问题,经过艰苦卓绝的排查,我们发现问题出在type="text"上,这里如果是静态写死的"text"就没问题,如果是type="{{metas.x.type}}"这种动态键盘类型,即使实际上两个input都是text,在两者之间点击切换,一样会导致IOS微信闪退。

最后一次编辑于  2020-06-10
回答关注问题邀请回答
收藏

1 个回答

  • 莫名流年
    莫名流年
    2020-06-07

    拆表单把,别偷懒... 出这个问题估计跟input监听机制有关系, 最快的解决办法就是把你这一个表单拆分成2-3个独立的组件,然后每次少监听点.


    2020-06-07
    有用
    回复 4
    • 江南愚子
      江南愚子
      2020-06-07
      请问表单拆分成组件的意思是什么?我想无论怎么分拆,最终这个页面上还是会有多达17个input,这是由业务决定的,我也不想监听bindinput或bindblur,但是使用submit按钮提交表单,又存在有些手机无法取得表单数据的问题
      2020-06-07
      回复
    • 莫名流年
      莫名流年
      2020-06-07回复江南愚子
      比如,把你17个表单分下类,先让用户填3-5个,然后点下一步,去下一页这样子. 然后当所有表单数据填完,再向page抛出提交表单事件即可.
      至于说提取成组件,是这样可以尽可能小的影响原有业务.
      2020-06-07
      回复
    • 江南愚子
      江南愚子
      2020-06-07
      拆分页面需要根据业务特征划分,有关联的字段放在一起,但我们这个页面并不适合分页,分页的策略有考虑过的
      2020-06-07
      回复
    • 莫名流年
      莫名流年
      2020-06-07回复江南愚子
      这个你看着考虑吧,从我没接触过你们业务角度考虑,移动端的应用还是不要一个页面扔上去6个以上的输入内容.
      2020-06-07
      回复
登录 后发表内容
问题标签