页面可见性问题使用Chrome和制表符循环

时间:2013-12-10 16:50:42

标签: javascript google-chrome tabs visibility

以下代码在所有浏览器中均可正常使用。它正确显示当前页面可见性作为文档标题。例如,如果浏览器已最小化或用户单击其他选项卡,则文档将隐藏,标题也会相应更改。当用户返回页面时,文档变为可见,标题也会调整。

然而 Chrome 表现出一种奇特的行为:它正确地响应以最小化,最大化(恢复)事件,相应地调整可见性。它还可以识别用户何时单击其他选项卡,退出当前,第一次将文档标题设置为隐藏。但是,当用户从其他标签返回文档时,没有任何反复发生。当从不同的标签重新调整页面时,为什么Chrome无法识别该页面?有没有办法解决这个问题或者更好的方法呢?谢谢,非常感谢你的帮助。

<script type="text/javascript">
var visibility;

function init() {


    if (typeof document.hidden != "undefined" || typeof document.msHidden != "undefined" ||
    typeof document.webkitHidden != "undefined" || typeof document.mozHidden != "undefined") 
    {

        if (typeof document.hidden != "undefined") 
    {
        visibility = !document.hidden;
        if (addEventListener) document.addEventListener("visibilitychange", visibilityChange);
    }
        else if (typeof document.msHidden != "undefined") 
    {
        visibility = !document.msHidden;
        if (addEventListener) document.addEventListener("msvisibilitychange", visibilityChange);
    }
    else if (typeof document.webkitHidden != "undefined") 
    {
        visibility = !document.webkitHidden;
        if (addEventListener) document.addEventListener("webkitvisibilitychange", visibilityChange);

    }
    else if (typeof document.mozHidden != "undefined") 
    {
        visibility = !document.mozHidden;
        if (addEventListener) document.addEventListener("mozvisibilitychange", visibilityChange);
    }


    }
    else displayWarning();
}


function displayWarning() {
    alert("Warning!");
}

function visibilityChange() {
    if (typeof document.hidden != "undefined") visibility = !document.hidden;
    else if (typeof document.msHidden != "undefined") visibility = !document.msHidden;
    else if (typeof document.webkitHidden != "undefined") visibility = !document.webkitHidden;
    else if (typeof document.mozHidden != "undefined") visibility = !document.mozHidden;

    handleVisibility();
}


function handleVisibility() {    
    if (visibility) {
        document.title="Visible";
    }
    else {
        document.title="Hidden";
    }
}


init();
</script>

0 个答案:

没有答案