在昨天晚上的时候测试突然告诉我一个问题,在iphone 6s中select选择器在第一次点击后,其他的选择无法点击。整个手机都属于暂时性死机状态。
当时首先对代码进行了排查,排除是逻辑方面的问题。经过多方面验证发现只有6s会出现,这是对兼容性进行了进一步的考虑。
多方面兼容后,发现也不是兼容的问题。在一步步的实验中发现当点击后,需要滑动一次才可以继续点击,这个时候发现有可能是弹出影响的问题。
经过进一步的验证,发现当弹窗小时候,页面并没有进行回落。至此可以判断是因为页面弹起没有回落引起的点击事件失效。
当找到问题时,解决很简单了。在代码中发现在布局中用了flex布局,当弹出层出现的时候导致flex布局失效,页面不会回落。这时只需要在失焦的时候对页面进行强制回落即可。
$("select").on("blur", function() {
window.scroll(0, 0); //失焦后强制让页面归位
});
在dug的调试过程中在耗费时间的就是寻找问题原因,当找到时耗费的时间并没有想象中的多。这个问题的解决总共花费了差不多三个小时。