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