原因是:访问页面时,某些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);

}

});

}

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

jQuery事件之页面框架加载后自动执行 1)概述 HTML执行是按自上而下编译,而

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

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

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

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

spring启动后立即执行方法

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

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

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

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

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

随机推荐

ASP.net解析JSON例子

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

VisualSVN Server以及TortoiseSVN客户端的配置和使用方法

http://www.cnblogs.com/beautifulFuture/archive/2014/07/01/3818211.html 近期学习代码管理工具,首先学习一下svn和Tortoise ...

sublime 设置文件默认打开方式

win7,sublime text 3 无法关联文件 删除 HKEY_CURRENT_USER\Software\Classes\Applications下的Sublime_Text.exe项.你就发 ...

asp.net core 2.0 Microsoft.Extensions.Logging 文本文件日志扩展

asp.net core微软官方为日志提供了原生支持,有如下实现 Console Debug EventLog AzureAppServices TraceSource EventSource 并且在 ...

mysql初学,mysql修改,mysql查找,mysql删除,mysql基本命令

Mysql 下载地址https://dev.mysql.com/downloads/mysql/ 1.连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYS ...

[bzoj2843&&bzoj1180]极地旅行社 (lct)

双倍经验双倍的幸福... 所以另一道是300大洋的世界T_T...虽然题目是一样的,不过2843数据范围小了一点... 都是lct基本操作 #include #includ ...

了解vue里的Runtime Only和Runtime+Compiler

转自:了解vue里的Runtime Only和Runtime+Compiler 扩展文章:Vue 2.0如何仅使用Runtime-only Build构建项目? 可以看到有两种版本: Runtime ...

Centos 安装 python2.7.10以及pip

安装python2.7.10 1. 下载安装包并解压 wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz tar -xf P ...

No.7 selenium学习之路之Alert弹窗

Alert弹窗 弹窗是用工具选不到的~ 切换到alert driver.switch_to_alert() 新的语法:driver.switch_to.alert 注:新的语法不需要后面加括号 打印a ...

UBUNTU 14.04 INSTALL nsenter

cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.25/util-linux-2.25.tar.gz | tar - ...

alert时java还时js_js 加alert后才能执行方法相关推荐

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

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

  2. js 加alert后才能执行方法

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

  3. vue组件加载完成之后执行方法_vuejs实现ready函数加载完之后执行某个函数的方法...

    编程之家收集整理的这篇文章主要介绍了vuejs实现ready函数加载完之后执行某个函数的方法,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. vue.js 教程 Vue.js(读音 /v ...

  4. vue组件加载完成之后执行方法_Vue.js实现ready函数加载完之后执行某个函数的方法...

    Vue.js实现ready函数加载完之后执行某个函数的方法 发布于 2020-7-10| 复制链接 摘记: vue.js 教程Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面 ...

  5. vue组件加载完成之后执行方法_vue-cli监听组件加载完成的方法

    在使用vue-cli开发项目时遇到过一个问题,要求是页面组件全部加载完成后再执行某个函数,给上代码参考,方法可能有点笨,好在实现了功能. 1.安装vuex npm install vuex --sav ...

  6. 计算机启动后需重启才能正常显示,电脑开机时屏幕显示无信号,需要重启后才能正常使用,是什么问题?...

    第一次开机没显示器没显示,按理说不会有一声蜂鸣(嘀的一声),如果听到有蜂鸣声,说明主机自检通过.基本硬件没问题,肯定不是硬盘的问题.是显卡的问题(有这种情况,原因不明.),也可能是显示器显示延迟(不是 ...

  7. vue组件加载完成之后执行方法_vuejs页面加载完成后执行函数

    module.exports = { data: function(){ return { memberQrcodeState: false } }, components: {memberQrcod ...

  8. JAVA——Scanner类绑定System.in后调用close()方法所引发的错误及其解决方案

    基本概念 Java通过系统类System实现标准输入/输出的功能 通过实例化Scanner类的方式实现从键盘的数据输入 问题描述 错误示例一: import java.util.Scanner;pub ...

  9. 绑定QQ时java.lang.NoClassDefFound

    绑定QQ时,会报如下错误: java.lang.NoClassDefFoundError: com.tencent.stat.StatConfig 解决方法如下两步: 1:右键项目,选择Propert ...

最新文章

  1. 这些大酒店用大数据和分析技术对我们做了什么?
  2. Fiori launchpad里Enter Group name这个tile是怎么配置出来的
  3. Spring应用架构
  4. iOS VIPER架构(三)
  5. DeFi货币市场协议DMM宣布因监管部门的要求,已停止运营
  6. 2013吉林通化邀请赛 1004 D-City 并查集求连通分支数
  7. android peopleactivity.java,Android面试基础篇---Activity(上)
  8. RabbitMQ + ELK 搭建日志平台
  9. python使用struct处理二进制数据(使用pack和unpack进行打包和解包)
  10. linux下启动tomcat出现“This file is needed to run this program ”
  11. 主键和外键(MySQL)
  12. ie9服务器win2008系统离线安装包,IE9离线安装包完整版
  13. 三种碎片化方法:RECAP, BRICS与eMolFrag
  14. 输入圆半径 计算 直径 周长 面积
  15. 衣带渐宽终不悔,为UI消得人憔悴
  16. 渗透测试如何学习? (*╹▽╹*) 信息收集 ~ 其一
  17. Python中有关文件的操作
  18. 2019各大互联网公司年会盘点
  19. 一份Hive面试题及答案
  20. prefix-list前缀列表

热门文章

  1. 达摩院文档级关系抽取新SOTA和零样本关系抽取新任务
  2. 科研实习 | 约翰霍普金斯大学Alan Yuille教授招收计算机视觉暑期科研实习生
  3. 飞桨抠图直播2020.4.1
  4. 深度学习入门之PyTorch学习笔记:多层全连接网络
  5. Linux c modbus 线程,Modbus读写模拟量寄存器详解
  6. dracut 查看linux分区,Centos进入dracut模式,报 /dev/centos/swap does not exist,如何恢复
  7. python的for循环语句怎么写_python中的for循环语句怎么写
  8. Spring-aop注解开发(切点表达式的抽取)
  9. java按位取反“~“运算符,负数右移
  10. 牛客题霸 NC3 链表中环的入口结点