记录vue移动开发中碰到的问题
1、微信ios 向上向下拉动会露出底色的问题
出现原因:
全局滚动:滚动到页面顶部或底部时继续向下向上滑动,就会出现
局部滚动:滚动到页面顶部或底部时,手指离开停下,再继续向下向上滑动,就会出现
解决方法:
局部滚动:使用scrollFix
全局滚动暂时没看到比较好的方案。
使用iscroll 插件算是一种解决方案,可以有效的防止弹性滚动的问题,浏览器自带的滚动条会被禁止.
2、移动端scroll事件,不能实时触发
原因分析
ios的webview 内核 设定了其在进行momentum scrolling(弹性滚动)时,会停止所有的 事件响应 及 DOM操作引起的页面渲染 (亲测),故 onscroll 不能实时响应
参考文章:https://segmentfault.com/q/1010000004453730
解决方法
用touchmove事件代替scroll事件。
网上有人提到使用 setInterval 来监听 scrollTop ,试了下感觉效果也不是特别好,有时候触发迟缓。
3、上传图片问题
问题说明
webview 框架下,使用<input type="file">上传图片, 安卓端很多机型无法正常唤起系统相册来选择图片。
原因是有些安卓APP的WebView默认屏蔽了该控件的使用,所以导致调用失败。
解决方案
如果安卓开发人员能解决,这个就放心交给他们解决了。
网上搜到的解决方案
https://www.zhihu.com/question/30694230?sort=created
https://stackoverflow.com/questions/5907369/file-upload-in-webview%EF%BC%89
如果不能解决,这个可能要考虑用APP原生方法来调用了图片了,放弃 <input type="file">
4、iscroll插件安卓机点击不了
问题说明
iscroll插件在安卓机上会导致点击事件失效
解决方案
click事件添加如下代码,对ios和Android 区别处理
iscroll在部分机型上,跳转到其他页面操作,返回滚动条失效的问题,使用refresh() 方法重新唤起滚动事件。
5、for key in obj 顺序是不定的
如果想要按顺序输出,则要注意重新排序了。
如果遍历数组,最好用for循环、forEach()方法遍历、es6的新方法for…of
6、第三方输入法会遮盖输入框
问题说明
一部分ios机型和安卓机型,底部输入框会遮盖输入法,主要出现在搜狗输入法,自带输入法没问题。
解决方案
使用scrollIntoViewIfNeeded 这个方法解决
部分安卓机可以作判断
if(/Android [4-6]/.test(navigator.appVersion)) { ... }
7、单页面hash模式切换成history模式
问题说明
将项目切换成 HTML5 History 模式。
解决方案
首先路由配置要更改:
同时配置了一个404页面跳转,路径查找失败,跳转到404页面
其次要运维这边配合,在服务器进行配置,依后端情况各异,具体配置参照vue-router官网
最后配置完发现,本地刷新和直接输入路径无法加载页面。解决方法是使用connect-history-api-fallback插件
8、图片预览,返回到上一个页面
问题说明
点击图片放大预览,直接点返回键,会退到上一个页面,而不是大图消失。
解决方案
两种解决方案:
第一种是将图片放大的功能单独写在一个页面,这样点击返回键,能正常使用。不过这种方案麻烦之处在于在新页面要重新请求接口,渲染图片。
第二种方案是操作history对象,改变浏览器的后退。我这种方案在PC端有向前键时行不通,还需要再研究研究…
以图片预览为例