帖子
帖子
用户
博客
课程
显示全部楼层
8
帖子
0
勋章
92
Y币

[superwebview] 魅族note2,mx4,mx5,返回刷新execSript 发送事件,apiready概率不执行

[复制链接]
发表于 2016-6-24 14:50:06
试了3种办法 QQ截图20160624144311.png QQ截图20160624144136.png QQ截图20160624144111.png
公司所有机型3种方法均没问题(返回刷新正常~~~~~),只有魅族note2,mx4,mx5经测试,刷新无效,
经测试,
apiready未执行,用apiready内定义ISREADY=9999,下述方法判断是否执行9999
setTimeout('outtime()',1000);
function outtime(){
   if(ISREADY == 9999){

   }else if(ISREADY == 9865){
      location.reload();
   }
}上述方法虽然可以 但是效率不好,写法也太粗暴,有什么办法判断apiready执行完毕
20
帖子
1
勋章
7583
Y币
把你的app整个发一下出来。
8
帖子
0
勋章
92
Y币
常山赵子云 发表于 2016-7-4 18:58
把你的app整个发一下出来。

要源码还是要apk
28
帖子
0
勋章
5162
Y币
301超 发表于 2016-7-5 10:36
要源码还是要apk

APK连接发下就可以了
68
帖子
0
勋章
1万+
Y币
只会在第一次执行apiready
8
帖子
0
勋章
92
Y币
lzy160824 发表于 2016-7-9 16:02
只会在第一次执行apiready

我是返回 刷新的 试过 监听刷新,location.reload() js刷新,openWin刷新,其他手机都完美执行,  就魅族 是概率执行成功。。。。。
68
帖子
0
勋章
1万+
Y币
魅族手机确实没有用过,你现在解决了么?
20
帖子
1
勋章
7583
Y币
我们目前没有相应的手机复现该问题,如你所述现象,猜测应该是apiready没被回调导致的,原因有待确认。
所以我建议建议通过换以下方式实现可以先绕过该问题:

你的代码中,应该是通过open已存在的Win/Frame,并传入强制刷新reload参数,来实现调用apiready函数,然后走你的刷新页面的逻辑的,此方式的实现必须依赖apiready回调,而且强制刷新页面,因为reload是整个html重新来一遍,更耗性能。

建议改为如下实现:

1、将页面中的比如ajax取数据并刷新页面逻辑单独拎出来,比如叫function refreshAbc(){},并在apiready中调用一次;

2、当需要刷新时,通过api.execScript向目标win/frame执行脚本,请求执行refreshAbc()函数,进行数据ajax获取刷新等操作。


以上点击机制,通过在frame中api.addEventListener配合在window中api.sendEvent也可实现。
您需要登录后才可以回帖 登录

本版积分规则