浏览器visibilitychange事件

浏览器visibilitychange事件1.项目中,从一个页面进入到另一个页面,然后在这个页面做一些修改后返回到第一个页面,这个时候第一个页面没有刷新只类似tab切换,所以用户的修改未生效。使用html的浏览器事件visibilitychange2.此事件已经得到了广泛应用,但是一些老版本的浏览器需要加相应的前缀3.微信内置的浏览器因为没有标签,所以不会触发该事件手机端直接按Home键回到桌面,也不会触发该事…

大家好,又见面了,我是你们的朋友全栈君。

1. 项目中,从一个页面进入到另一个页面,然后在这个页面做一些修改后返回到第一个页面,这个时候第一个页面没有刷新只类似tab切换,所以用户的修改未生效。使用html的浏览器事件 visibilitychange 

2. 此事件已经得到了广泛应用,但是一些老版本的浏览器需要加相应的前缀

3. 微信内置的浏览器因为没有标签,所以不会触发该事件 
    手机端直接按Home键回到桌面,也不会触发该事件
    PC端浏览器失去焦点也不会触发该事件,但是最小化回到桌面会触发

4. 定义有两个只读的document属性: hidden和visibilityStat
    
document.hidden是一个布尔值,简单的表示标签页显示或者隐藏(隐藏包括页面在后台标签页中或者浏览器最小化,但是不包括被其他软件比如打开的sublime遮盖)
    document.visibilityState属性更详细,有四个值
           =》visible: 页面在前台标签中
           =》hidden: 页面在后台标签页或者浏览器最小化
           =》uploaded: 页面正在从内存中卸载
           =》prerender: 页面在屏幕外执行预渲染处理,document.hidden的值为true

function getHiddenProp(){
    var prefixes = ['webkit','moz','ms','o'];    
    // if 'hidden' is natively supported just return it
    if ('hidden' in document) return 'hidden';    
    // otherwise loop over all the known prefixes until we find one
    for (var i = 0; i < prefixes.length; i++){
        if ((prefixes[i] + 'Hidden') in document) 
            return prefixes[i] + 'Hidden';
    } 
    // otherwise it's not supported
    return null;
}
function getVisibilityState() {
    var prefixes = ['webkit', 'moz', 'ms', 'o'];
    if ('visibilityState' in document) return 'visibilityState';
    for (var i = 0; i < prefixes.length; i++) {
        if ((prefixes[i] + 'VisibilityState') in document)
            return prefixes[i] + 'VisibilityState';
    }
    // otherwise it's not supported
    return null;
}
function isHidden() {
    var prop = getHiddenProp();
    if (!prop) return false;    
    return document[prop];
}
var visProp = getHiddenProp();
if (visProp) {
    var evtname = visProp.replace(/[H|h]idden/, '') + 'visibilitychange';
    document.addEventListener(evtname, function () {
        document.title = document[getVisibilityState()]+"状态";
    },false);
}

 

转载于:https://www.cnblogs.com/lindsayzhao103011/p/8884418.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148461.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 《物流与供应链管理》课程论文

    《物流与供应链管理》课程论文《物流与供应链管理》课程论文题目:基于重心法的物流配送中心选址研究学生姓名贾树丙学号110104200208指导教师于德建二级学院信息学院专业名称计算机科学与技术班级11计算机2201

    2022年8月4日
    3
  • setScale,preScale和postScale的区别

    setScale,preScale和postScale的区别下面是Matrix3*3的矩阵结构[java] viewplaincopy1.   {MSCALE_X,MSKEW_X,MTRANS_X,  2.   MSKEW_Y,MSCALE_Y,MTRANS_Y,  3.   MPERSP_0,MPERSP_1,MPERSP_2}  一、首先介绍Scale缩放的控制scale就是缩放,我们调用Matrix的setSc

    2022年10月20日
    0
  • 常见的图像增强方法有_图像中值滤波的算法实现

    常见的图像增强方法有_图像中值滤波的算法实现1.对比度拉升采用了线性函数对图像的灰度值进行变换2.Gamma校正采用了非线性函数(指数函数)对图像的灰度值进行变换这两种方式的实质是对感兴趣的图像区域进行展宽,对不感兴趣的背景区域进行

    2022年8月3日
    3
  • expr_const在函数前与函数后的区别

    expr_const在函数前与函数后的区别const修饰常量,但是const并未区分编译时常量和运行时常量,而constexpr则只能是编译时常量,在C++11中提出。这篇文章,将详细讲解constexpr。一、常量表达式常量表达式(constexpression):指值不会改变并且在编译阶段过程就能得到计算结果的表达式。以下两种是常量表达式:constintmaxSize=10;constintlimit=maxSize+1;以下两种不是常量表达式:intstaff_size=27;cons..

    2022年9月29日
    0
  • pyside2界面美化_手机音量进度条 插件

    pyside2界面美化_手机音量进度条 插件前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

    2022年7月29日
    3
  • xshell 激活成功教程版安转教程

    xshell 激活成功教程版安转教程转自:https://www.cnblogs.com/bowendown/p/11937159.html,亲测perfect!目录一、xshell6商业版安装教程1.为什么要用xshell2

    2022年8月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号