原因是:访问页面时,某些js方法还没初始化(或者还没有加载出来)此时调用肯定不执行。alert起到了延迟的功能,当用户点击确定此时要执行的js恰好初始化完成,能正常执行。

解决方法是 加setTimeout函数,延迟1秒执行js。

分析现象,逐个排查,找到问题的本质,想解决方案。

现象:在做手机端页面开发使,有一个倒计时功能,正常使用没问题。问题就出在当用户从手机浏览器切换到其他应用在切到手机浏览器,这这段时间内倒计时器没有执行,导致计数不准。

    后来找到visibitilychange 事件,即页面可见性。当用户重新切换到浏览器时刷新页面从服务器拿到最新的倒计时时间。

测试后发现新的问题来了,ios 可以完美刷新。Android 总是有时候刷新有时候不刷新。开始以为是visibilitychange浏览器兼容性问题,找了好久没解决。

反复debug发现,visitilitychange 每次都能执行并alert 值出来。接着排查 将问题 js刷新 当前页面。window.location.href=location.href。更换刷新代码后问题依然存在。

百思不得其解,这个时候转机出现了(念念不忘,终有回响),加入alert后每次都能正常刷新,去掉alert后就不刷新了。

这才找到问题发生的本质。

解决方法是:加setTimeout,1秒后执行刷新的操作

// 手机标签切换事件
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);
} });
}

  

js 加alert后才能执行方法的更多相关文章

  1. jquery-事件之页面框架加载后自动执行

    jQuery事件之页面框架加载后自动执行 1)概述 HTML执行是按自上而下编译,而<script>一般写在body结束之前.如果在HTML加载的过程中卡住, 比如加载图片等,没有显示出来 ...

  2. 不阻塞浏览器的解析,待外部js下载完成后异步执行

    网站统计中的数据收集原理及实现(js埋点实现) - lastwhisper - CSDN博客 https://blog.csdn.net/l1212xiao/article/details/80450 ...

  3. Java-JUC(十二):有3个线程。线程A和线程B并行执行,线程C需要A和B执行完成后才能执行。可以怎么实现?

    方案(一)CountDownLatch: 使用CountDownLatch+Semaphore方式实现: import java.util.concurrent.CountDownLatch; imp ...

  4. spring启动后立即执行方法

    1.方法所属的类继承InitializingBean接口. 2.重写afterPropertiesSet()方法. afterPropertiesSet方法会在bean被初始化时执行. 当bean的作 ...

  5. 解决每次执行Java等命令时都要重新source /etc/profile后才能执行,否则找不到命令

    linux mint 我们通常将环境变量设置在/etc/profile这个文件中,这个文件是全局的. /etc/profile:在登录时,操作系 统定制用户环境时使用的第一个文件 ,此文件为系统的每个 ...

  6. 您只能在 HTML 输出中使用 document.write。如果您在文档加载后使用该方法,会覆盖整个文档

    https://blog.csdn.net/qq_37425546/article/details/54868908

  7. 关于alert后,才能继续执行后续代码问题

    如果在正常情况下,代码要在alert之后才执行,解决办法:将要执行的代码用setTimeout延迟执行即可(原因:页面未加载完毕) 首先,先说明问题情况: 如下JS代码,不能正常执行,只有在最前面加上 ...

  8. js常见执行方法$(document).load(),$(document).ready()

    $(document).load(); 当web页面以及其附带的资源文件,如CSS,Scripts,图片等,加载完毕后执行此方法.常用于检测页面(及其附带资源)是否加载完毕. $(document). ...

  9. js常见执行方法window.onload = function (){},$(document).ready()

    1. window.onload = function(){}; 当页面DOM对象加载完毕,web浏览器能够运行JS时,此方法即被触发. 2. $(document).ready();当web页面以及 ...

随机推荐

  1. (改进)Python语言实现词频统计

    需求: 1.设计一个词频统计的程序. 2.英语文章中包含的英语标点符号不计入统计. 3.将统计结果按照单词的出现频率由大到小进行排序. 设计: 1.基本功能和用法会在程序中进行提示. 2.原理是利用分 ...

  2. java词频统计——改进后的单元测试

    测试项目 博客文章地址:[http://www.cnblogs.com/jx8zjs/p/5862269.html] 工程地址:https://coding.net/u/jx8zjs/p/wordCo ...

  3. [转帖]Docker里运行Docker docker in docker(dind)

    Docker里运行Docker docker in docker(dind) http://www.wantchalk.com/c/devops/docker/2017/05/24/docker-in ...

  4. 平时在PHP编码时有没有注意到这些问题

    编出一手好代码,这个是需要你在平时开发中日积月累的,平时如果你有注意到以下的那些代码的编码,那么祝贺你,你在技能提升这方面已经垫下了一些基础,编写出一手好代码,说白了就是你特么注意到性能这块的问题,代 ...

  5. java自定义注解学习(二)_注解详解

    上篇文章,我们简单的实现了一个自定义注解,相信大家对自定义注解有了个简单的认识,这篇,这样介绍下注解中的元注解和内置注解 整体图示 内置注解 @Override 重写覆盖 这个注解大家应该经常用到,主 ...

  6. java的类属性默认有this 但容易与参数重名 所以需要显性的加上this 以分区别

  7. MT【194】又见和式变换

    (2007浙江省赛B卷最后一题)设$\sum\limits_{i=1}^{n}{x_i}=1,x_i>0,$求证:$n\sum\limits_{i=1}^n{x_i^2}-\sum\limits ...

  8. NOIP2018 Day0 回首向来萧瑟处,也无风雨也无晴

    回首向来萧瑟处,也无风雨也无晴 NOIP2018 Day0 感想  by HGOI ljc20020730 Back ground: /* HGOI 陈功杰让我们写初赛总结?! (考这么烂还要写总结? ...

  9. springboot通过ssh通道连接mysql数据库

    navicat可以通过ssh通道连接mysql数据库,那java中如何实现了,springboot又该怎样集成呢? 1.添加包 <dependency> <groupId>co ...

  10. Linux上软件安装

    手动安装 以安装SublimeText3为例: 首先下载安装包 [keysystem@localhost ~]$ wget https://download.sublimetext.com/subli ...