zoukankan      html  css  js  c++  java
  • window下的窗口事件-js

    window.onfocus = function(){ // 窗口获取焦点事件};

    window.onblur= function(){ // 窗口失去焦点事件};
    有弊端,亲测。

    所以我还有一个更好的办法,就是监听页面是否在当前,而不是最小化或离开了。

    document.addEventListener('visibilitychange', () => {
    if (!document.hidden) {
    // 我回来了。
    }
    });

    2018年12月7日:补充,有兼容问题。
    于是我找到了这个兼容代码:
    // 兼容代码到ie9
    (function() {
        let hidden = 'hidden';
        const onchange = function(evt) {
            const v = 'visible';
            const h = 'hidden';
            const evtMap = { focus: v, focusin: v, pageshow: v, blur: h, focusout: h, pagehide: h };
            evt = evt || window.event;
            if (evt.type in evtMap) {
                document.body.className = evtMap[evt.type];
            } else {
                document.body.className = this[hidden] ? 'hidden' : 'visible';
            }
        };
        // Standards:
        if (hidden in document) {
            document.addEventListener('visibilitychange', onchange);
        } else if ((hidden = 'mozHidden') in document) {
            document.addEventListener('mozvisibilitychange', onchange);
        } else if ((hidden = 'webkitHidden') in document) {
            document.addEventListener('webkitvisibilitychange', onchange);
        } else if ((hidden = 'msHidden') in document) {
            document.addEventListener('msvisibilitychange', onchange);
        } else if ('onfocusin' in document) {
            // IE 9 and lower:
            document.onfocusin = document.onfocusout = onchange;
        } else {
            // All others:
            window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange;
        }
        // set the initial state (but only if browser supports the Page Visibility API)
        if (document[hidden] !== undefined) {
            onchange({type: document[hidden] ? 'blur' : 'focus'});
        }
    })();
    

      

    大神的地址:https://www.cnblogs.com/zichi/p/5158745.html

  • 相关阅读:
    470. 用 Rand7() 实现 Rand10() 采样
    165. 比较版本号 字符串
    Java 通过属性名称读取或者设置实体的属性值
    双非Java的学习之旅以及秋招路程
    【Unity3D】不可读Texture资源的获取
    java 8 Map 之merge用法
    Jmeter-计数器的应用
    Jmeter-集合点【同步定时器】应用
    2. Go并发编程--GMP调度
    Go序列化嵌套结构体
  • 原文地址:https://www.cnblogs.com/webSong/p/10077318.html
Copyright © 2011-2022 走看看