本帖最后由 李维强-15级 于 2018-6-14 22:56 编辑
bug分析
该项目用APICloud开发,ionic+angularJS+jquery框架
项目源代码下载:http://v30.cqutbbs.cn/upload/apk/apicloud.rar
在线调试的模拟器下载 选 AppLoader:https://docs.apicloud.com/Download/download
另外给出IDE环境APICloud Studio 2: https://www.apicloud.com/devtools#studio
开发调试过程中,尽量将你的APP项目config中的<preference name="debug" value="true"/>字段置为true,当JS报错时,将会弹出提示到屏幕;然而对IOS并没有用,IOS不会报错
由于本源代码已加入微信登录 在调试的时候 可以在share.js里面 给unionId设定一个固定值
在APICloud Studio 2中,真机wifi同步后,进入APP(一定要让手机能上网),点击一个视频,在安卓就会报错,个人感觉大概就是这个原因,
为了方便看到报错问题,大概就是应为scrollChild==null,于是我把项目用到的ionic.bundle.min.js改为了ionic.bundle.js,并且在ionic.bundle.js加入了相应的判断语句,左边可以看到对应的行数
经过上面的判断,在安卓上面就没有任何错误提示了,在IOS上点开视频闪退的也好了很多。但是还是会打开视频闪退,特别是进入IOS进入“视频栏目”后,反复点几次就直接闪退了
另外我注意到一个jquery库和ionic的库可能存在同名
在ionic.bundle.js的 destroy函数 和swiper.jquery.min.js(下载地址:https://github.com/nolimits4web/ ... after=v4.0.0-beta.2 下载3.3.1) 中的destroy可能重名,于是我下载了Swiper 3.3.1。引用了swiper.jquery.js,把原项目中引用的swiper.jquery.min.js改为了引用swiper.jquery.min.js 发现其中确实存在destroy函数,并且多处存在,于是我加入alert 浏览过程中没有弹出
但是我只加入了这一处,在swiper.jquery.js 这个destroy可能有多处,我没有完全测试。
对于该问题 我不知道该如何处理,IOS报错么有任何提示,直接闪退。
-------------------------------------------------------------
观察到 有可能jquery的轮播插件和ionic的函数可能重命名引起冲突
于是 直接把轮播注释掉
在index.html中注释掉<script type="text/javascript" src="plugin/Swiper/3.3.1/js/swiper.jquery.min.js"></script>
然后在main.html中注释掉<div class="swiper-container">整个DIV,在main.js中注释掉66-73行。
但是结果也没用
然后我把ionic从1.2.4升级到1.3.3,然而也没用
-----------------------------------------------------------------------------------------------
经过分析
发现 ionic在进行跳转到另一页面的时候,可能会渲染一些东西,有可能对下拉刷新有影响,所以在进行跳转之前,加了个100ms的延时,这样一来,安卓不会报错了,但是IOS上面却还是闪退的现象。
[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode $scope.goToDetal=function(id){
//延时加载,因为在ios10和android7以上有bug
setTimeout(function(){
$state.go('detail',{id:id});
}, 100)
}
例如这样
|