帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
35
帖子
0
勋章
1335
Y币

[BUG] api.openWin 在iOS上的BUG

[复制链接]
发表于 2015-3-26 01:53:12
本帖最后由 流风回雪 于 2015-3-26 02:22 编辑
  1. <div onclick="reload()">刷新</div>
  2. <script>
  3. function reload(){
  4.         api.openWin({name: 'root', reload:true});//这样没问题
  5. }
  6. </script>
复制代码
  1. <div onclick="login()">登录</div>
  2. <script>
  3.   function login(){
  4.         api.openWidget({
  5.             id: 'xxx',
  6.             animation: {
  7.                 type: 'flip',
  8.                 subType: 'from_left'
  9.             }
  10.         }, function(ret, err){
  11.             if (ret && ret.state == 'xxx') {
  12.                 getToken(ret.code);
  13.             }else{
  14.                 api.toast({
  15.                     msg: '取消登录',
  16.                     duration:2000,
  17.                     location: 'top'
  18.                 });
  19.             }

  20.             if(err && err.msg){
  21.                 api.alert({msg: err.msg});
  22.             }
  23.             
  24.         });
  25.     }

  26.    function getToken(code){
  27.         api.ajax({
  28.         url: 'http://www.xxxxxxx',
  29.         method: 'get',
  30.         timeout: 30,
  31.         dataType: 'json',
  32.         returnAll:false,
  33.         data:{
  34.             values: {code: code},
  35.             }
  36.         },function(ret,err){
  37.             if (ret) {
  38.                 //console.log('登录成功');
  39.                 $api.setStorage('access_token',ret.access_token);
  40.                 $api.setStorage('refresh_token',ret.refresh_token);
  41.                 $api.setStorage('token_type',ret.token_type);
  42.                 $api.setStorage('expires_in',ret.expires_in);
  43.                 $api.setStorage('uid',ret.uid);
  44.                 api.openWin({name: 'root',reload:true});      //这样,在iOS上不起作用
  45.             }else {
  46.                 api.toast({
  47.                     msg: '登录失败',
  48.                     duration:2000,
  49.                     location: 'top'
  50.                 });
  51.             };
  52.         });
  53.     }
  54. </script>
复制代码

在 5S ios7、6+ ios8 上有问踢
在 海马玩模拟器 上能正常执行



4
帖子
0
勋章
1277
Y币
iphone5 和 iphone 6 plus 未发现此bug

视频:

reload.zip 下载附件
2015-3-26 19:49上传1.08 MB下载次数: 1172
35
帖子
0
勋章
1335
Y币
前端咨询-Alon 发表于 2015-3-26 19:50
iphone5 和 iphone 6 plus 未发现此bug

视频:

我上面是两段代码,第一段没问题,第二段那种用法就不起作用
1
帖子
0
勋章
13
Y币
我的也是这样的问题。安卓没问题。。苹果就有问题。。奇怪了!!
35
帖子
0
勋章
1335
Y币
王海 发表于 2015-3-27 00:53
我的也是这样的问题。安卓没问题。。苹果就有问题。。奇怪了!!

终于找到和我遇到相同问题的了
28
帖子
1
勋章
1万+
Y币
在调用api.openWin这句之前弹一个alert,看看代码究竟执行到这里没有
4
帖子
0
勋章
1277
Y币
流风回雪 发表于 2015-3-27 00:37
我上面是两段代码,第一段没问题,第二段那种用法就不起作用

第二段代码我如何测试,可否提供一份简单的 demo
1
帖子
0
勋章
13
Y币
找到原因了。。
dataType: 'json',
改成
dataType: 'text',
查找是否返回的数值有错误的信息。
错误的信息貌似ios就不执行了。
你查一下你的后台的代码有没有问题。
35
帖子
0
勋章
1335
Y币
本帖最后由 流风回雪 于 2015-3-28 13:27 编辑
前端咨询-Alon 发表于 2015-3-27 14:17
第二段代码我如何测试,可否提供一份简单的 demo

附件中是测试代码,说明一下:
1、由于 AppLoader 不能使用 api.openWidget 调用当前项目 wgt 目录里的 Widget,所以如果你们在AppLoader里测试的话,请把 wgt 目录里的 OSC 单独作为一个项目同步到 AppLoader中去。
2、由于我做的是通过 OSChina 的 OpenAPI 进行 OAuth2 登录,所以测试人员需要到 OSChina 注册一个帐号。
3、要测试的 api.openWin 位置在 html/frm_login.html 的 第154行

QQ截图20150327230713.jpg

PS:我在小米上测试无问题、在海马玩模拟器上测试无问题、在iPhone5S ios7上无法执行、在iPhone6+ ios8上无法执行。

问题已按照11楼的方法解决,由于测试代码中有我的应用私钥,所以附件已删除
35
帖子
0
勋章
1335
Y币
技术咨询-Kenny 发表于 2015-3-27 14:14
在调用api.openWin这句之前弹一个alert,看看代码究竟执行到这里没有

我用这种方法试过,在 api.openWin 前后都加了 alert 测试,能弹出提示框,说明程序流程执行到那并且无错。测试用例已上传,麻烦你们测试下,还有就是你们QQ群还有吗?加不进去呢
12下一页
您需要登录后才可以回帖 登录

本版积分规则