了解用户何时在浏览器中查看您的站点与另一个选项卡/应用程序

Gur*_*epS 6 javascript asp.net chat

可能重复:
测试窗口是否具有焦点

我经常使用的网站有一个在线聊天功能(弹出窗口,非常类似于Facebook).当我的浏览器不在此站点的选项卡上时,会发出警报以警告我收到任何新的聊天消息,并且当我的浏览器不在此站点的选项卡上时,声音不会发生(按设计我假设) .

这是如何实现的?代码(我假设并因此在我的客户端执行的javascript)如何知道我什么时候/不在看网站?

谢谢

Jru*_*rud 0

基于上面其他评论的综合答案。是的,这主要是一个重复的问题,但它被很好地提出,因此如果有人没有回答它,它将永远保留在未回答的问题库中。对于有此问题的其他人找到此答案,请参阅问题评论中的其他链接主题。

<BGSOUND id="BGSOUND_ID" LOOP=1 SRC="jsilence.mid">

<script type="text/javascript" language="JavaScript">

    function onBlur() {
        document.body.className = 'blurred';
    };
    function onFocus(){
        document.body.className = 'focused';
    };

    if (/*@cc_on!@*/false) { // check for Internet Explorer
        document.onfocusin = onFocus;
        document.onfocusout = onBlur;
    } 
    else {
        window.onfocus = onFocus;
        window.onblur = onBlur;
    }

    function playSound(audioURL) 
    {
        if (document.body.className == 'blurred')
        {
            if (document.all) 
            {
                document.all['BGSOUND_ID'].src=audioURL;
            }
            else 
            {
                self.iplayer.location.replace('jsplayer.htm?'+audioURL);
            }

            setTimeout("stopSound();", 500);
        }
    }

    function stopSound() 
    {
        if (document.all) 
        {
            document.all['BGSOUND_ID'].src='jsilence.mid';
        }
        else 
        {
            self.iplayer.location.replace('jsplayer.htm?stop');
        }
    }

    function NewMessage(message)
    {
        ShowMessage(message);
        playSound('ding.mid');
    }

</script>
Run Code Online (Sandbox Code Playgroud)

如果用户使用这些浏览器中的任何一个,此代码将使用 IE 和 opera 的 BGSound 标签来播放声音,否则它假设页面上有一个名为 iplayer 的 iframe 并使用嵌入的第 3 方播放器。详细信息请参阅来源。

  1. 重点代码来源:这里
  2. 声音播放来源:这里