缘由是:访问页面时,某些js方法还没初始化(或者尚未加载出来)此时调用确定不执行。alert起到了延迟的功能,当用户点击肯定此时要执行的js刚好初始化完成,能正常执行。javascript
解决方法是 加setTimeout函数,延迟1秒执行js。java
分析现象,逐个排查,找到问题的本质,想解决方案。ios
现象:在作手机端页面开发使,有一个倒计时功能,正常使用没问题。问题就出在当用户从手机浏览器切换到其余应用在切到手机浏览器,这这段时间内倒计时器没有执行,致使计数不许。浏览器
后来找到visibitilychange 事件,即页面可见性。当用户从新切换到浏览器时刷新页面从服务器拿到最新的倒计时时间。服务器
测试后发现新的问题来了,ios 能够完美刷新。Android 老是有时候刷新有时候不刷新。开始觉得是visibilitychange浏览器兼容性问题,找了很久没解决。函数
反复debug发现,visitilitychange 每次都能执行并alert 值出来。接着排查 将问题 js刷新 当前页面。window.location.href=location.href。更换刷新代码后问题依然存在。测试
百思不得其解,这个时候起色出现了(念念不忘,终有回响),加入alert后每次都能正常刷新,去掉alert后就不刷新了。spa
这才找到问题发生的本质。debug
解决方法是:加setTimeout,1秒后执行刷新的操做blog
// 手机标签切换事件 function visibilityChange() { document.addEventListener('visibilitychange', function() { var u = navigator.userAgent; if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { //alert(document.visibilityState); if(document.visibilityState=='visible'){ setTimeout(function() { location.reload(); }, 1000); } } else if (u.indexOf('iPhone') > -1) { location.reload(); } else { setTimeout(function() { location.reload(); }, 1000); } }); }