浏览器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)
上一篇 2022年6月29日 上午7:16
下一篇 2022年6月29日 上午7:16


相关推荐

  • android 模拟器 haxm,Android模拟器不使用HAXM

    android 模拟器 haxm,Android模拟器不使用HAXM我遇到HAXM问题.在我使用Windows7之前,一切都很好,但升级到Win8.1Pro后,当我从AVD屏幕启动模拟器时,我看不到haxm启动消息.HAXM安装并正常工作,我安装了x86的图像,我的设备使用它但仍然无法在启动窗口中看到Emulator正在使用haxm的确认消息.这是情况;>我的处理器支持vt.>我检查了我的服务,所有Hyper-VT服务都“停止”>HAXM…

    2022年6月28日
    26
  • VS2019无法打开源文件

    VS2019无法打开源文件前言最近有个业务需要在操作系统上实现两个进程之间的通信 所以必须学一波 C 了 刚一开始就遇到大问题 从网上摘了一个 socket 通信的程序后 疯狂标红 无法打开源文件 最终在项目 属性 C C 常规中的使用 Windows 运行时扩展 选择是就解决了这个问题

    2026年3月20日
    2
  • 数据绑定之DataFormatString

    数据绑定之DataFormatString设定BoundField的DataFormatString,通常有以下几种DataFormatString='{0:C}’货币,货币的格式取决于当前Thread中Culture的设置DataF

    2022年7月3日
    28
  • python3.7如何安装numpy库_python升级后第三方库

    python3.7如何安装numpy库_python升级后第三方库1.这是个傻瓜教程,首先打开pycharm,点击左上脚的File,选择settings,找到project中的pythoninterpreter点击图中加号,即可添加库2.直接在输入框中输入要安装的库,点击安装即可

    2022年8月27日
    5
  • JAVA获取服务器上文件路径,java 获取远程服务器目录的路径

    JAVA获取服务器上文件路径,java 获取远程服务器目录的路径java获取远程服务器目录的路径内容精选换一换已将所需升级的鲲鹏性能分析工具的软件包下载到本地。获取软件包后,需要校验软件包,确保与网站上的原始软件包一致,详细步骤请参见软件包校验。获取软件包后,需要校验软件包,确保与网站上的原始软件包一致,详细步骤请参见软件包校验。升级前请确认鲲鹏性能分析工具可以正常使用。升级前请确认安装空间至少保留原工具安装目录的大小加上新版本安装空间(1GB)为加强对系…

    2022年7月11日
    64
  • python—-简史

    python—-简史然软件产业的历史相对于人类历史只是白驹过隙,但世界上却存在非常多的编程语言,「Python」 就是其中之一。Python语言算得上一门“古老”的编程语言,Python流行这么久,必然有它

    2022年7月5日
    27

发表回复

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

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