var needCheckVersion = true;
function getVersion(){
if(needCheckVersion!=true){
return false;
}
needCheckVersion = false;
$.ajax({
type:'post',
url:baseUrl+'/api/work.php?act=getVersion&t='+new Date(),
data:'',
dataType:'json',
success:function(data){
//
//needGetVersion = true;
console.log("load done"+needCheckVersion);
var v = localStorage.version;
//console.log(v+'=='+data.v);
if(v!=data.v){
alert('有新版本,请到设置里点击在线更新进行更新 !');
}
//可能重装安装以后,localstorage数据就被清掉了
localStorage.new_version = data.v;
}
});
}
function plusReady(){
//从后台切换到前台时执行
document.addEventListener( "resume", resumeCallback);
function resumeCallback(){
console.log("resume");
getVersion();
}
//从前台切换到后台
document.addEventListener( "pause", pauseCallback );
function pauseCallback(){
console.log("pause");
needCheckVersion = true ;
}
}
代码如上,getVersion函数会触发2次或者3次,就算加了一个变量(needCheckVersion)来限制只触发一次,也不行,不知道什么原因?
会不会是因为多线程同时运行,所以就算限制了也会在不同的线程里触发?
10 个回复
祺佑
我也碰到这个问题,为什么没人解答
chender - 与人为善
先确定一下绑定监听的代码是不是被执行了多次,如果确实只执行了一次,那估计就是官方框架的问题了
船夫水手
有人解答吗?求解
6***@qq.com
我也碰到了这个问题,resume事件会被执行2次。
hylong
排查下看是不是代码重复执行了。如果还有问题,上传一个能重现问题的简单示例。
6***@qq.com
/**
运行环境从后台切换到前台事件
*/
document.addEventListener("plusready", onPlusReady, false);
2018-01-05 15:47
hylong
回复 6***@qq.com:单独运行没发现有问题。你是在什么环境下运行的
2018-01-05 15:50
6***@qq.com
ios环境下运行,android的还没有试
2018-01-05 15:53
Viccy
没人解答这个问题吗
1***@qq.com
这个问题都不解决了吗。。
1***@qq.com
深渊巨坑的地方 你要在vue 定义个变量 然后监听变量 在变量改变之后在执行方法 ,超级坑爹
1***@163.com - 90后前端菜鸟
resume的次数是不是等于页面打开的个数?
1***@163.com - 90后前端菜鸟
我也出现了这个问题,后来我发现是监听事件写在了onShow里面,会执行了多次,把监听事件写在onload里就没问题了