js 加alert后才能执行方法
原因是:访问页面时,某些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后才能执行方法的更多相关文章
- jquery-事件之页面框架加载后自动执行
		
jQuery事件之页面框架加载后自动执行 1)概述 HTML执行是按自上而下编译,而<script>一般写在body结束之前.如果在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:在登录时,操作系 统定制用户环境时使用的第一个文件 ,此文件为系统的每个 ...
 - 您只能在 HTML 输出中使用 document.write。如果您在文档加载后使用该方法,会覆盖整个文档
		
https://blog.csdn.net/qq_37425546/article/details/54868908
 - 关于alert后,才能继续执行后续代码问题
		
如果在正常情况下,代码要在alert之后才执行,解决办法:将要执行的代码用setTimeout延迟执行即可(原因:页面未加载完毕) 首先,先说明问题情况: 如下JS代码,不能正常执行,只有在最前面加上 ...
 - js常见执行方法$(document).load(),$(document).ready()
		
$(document).load(); 当web页面以及其附带的资源文件,如CSS,Scripts,图片等,加载完毕后执行此方法.常用于检测页面(及其附带资源)是否加载完毕. $(document). ...
 - js常见执行方法window.onload = function (){},$(document).ready()
		
1. window.onload = function(){}; 当页面DOM对象加载完毕,web浏览器能够运行JS时,此方法即被触发. 2. $(document).ready();当web页面以及 ...
 
随机推荐
- Daily Scrum 10.22
			
(写于10.22周四0晨) 昨天任务还未完成的继续完成任务. 每个人都查看自己的TFS,修改已经完成的任务状态,改为已关闭-已完成. 由于android studio运行过于慢,我们统一采取eclip ...
 - UIView 添加闪烁的渐变光
			
CGRect gradientRect=CGRectMake(- imageView3.bounds.size.width*, * imageView3.bounds.size.width, imag ...
 - Beta阶段敏捷冲刺②
			
1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 1.1昨天已完成的工作. 姓名 昨天已完成的工作 徐璐琳 完成设置界面的排版 祁泽文 实 ...
 - PAT 甲级 1110 Complete Binary Tree
			
https://pintia.cn/problem-sets/994805342720868352/problems/994805359372255232 Given a tree, you are ...
 - [Delphi]实现使用TIdHttp控件向https地址Post请求[转]
			
开篇:公司之前一直使用http协议进行交互(比如登录等功能),但是经常被爆安全性不高,所以准备改用https协议.百度了一下资料,其实使用IdHttp控件实现https交互的帖子并不少,鉴于这次成功实 ...
 - 微信  小程序组件   加入购物车全套  one  wxss
			
//1,wxss /*外部容器*/ .container { display: flex; flex-direction: column; align-items: center; justify-c ...
 - CF86D Powerful array
			
题意翻译 题意:给出一个n个数组成的数列a,有t次询问,每次询问为一个[l,r]的区间,求区间内每种数字出现次数的平方×数字的值 的和. 输入:第一行2个正整数n,t. 接下来一行n个正整数,表示数列 ...
 - 【BZOJ2257】[JSOI2009]瓶子和燃料(数论)
			
[BZOJ2257][JSOI2009]瓶子和燃料(数论) 题面 BZOJ 洛谷 题解 很明显就是从\(n\)个数里面选\(K\)个数让他们的\(gcd\)最大. 暴力找所有数的因数,拿个什么东西存一 ...
 - JAVA实现组合、排列、重复排列(多层循环)
			
1.代码 package com.hdwang; import java.util.ArrayList; import java.util.Arrays; import java.util.List; ...
 - C#利用Zxing.net生成条形码和二维码并实现打印的功能
			
开篇:zxing.net是.net平台下编解条形码和二维码的工具. 下载地址:http://pan.baidu.com/s/1kTr3Vuf Step1:使用VS2010新建一个窗体程序项目: ...