Javascript 顶级窗口焦点/模糊事件

Javascript 顶级窗口焦点/模糊事件,javascript,jquery,events,Javascript,Jquery,Events,我有一个简单的框架,比如 <frameset rows="100, 200"> <FRAME name="listener" src="frame1.html"> <FRAME name="content" src="http://www.someexternalurl.com/"> </frameset> 在侦听器窗体中,尝试侦听顶部窗口的焦点/模糊: <body> <div id="szamlalo


我有一个简单的框架,比如

<frameset  rows="100, 200">
    <FRAME name="listener" src="frame1.html">
    <FRAME name="content" src="http://www.someexternalurl.com/">
 </frameset>

在侦听器窗体中,尝试侦听顶部窗口的焦点/模糊:

<body>

<div id="szamlalo">30</div>

</body>
<script type="text/javascript">
var inFocus = true;
var counter = 30;
var timer;
$(document).ready(function(){
    $(window.top).focus(function(){
    //$(window.top).focusin(function(){
        inFocus = true;
    });
    $(window.top).blur(function(){
    //$(window.top).focusout(function(){
        inFocus = false;
    });
    timer = window.setInterval("countdown()",1000);
});
function countdown()
{
    if (counter > 0)
    {
        if (inFocus)
            counter--;
    }
    else
    {
        window.clearInterval(timer);
        window.location.href='masik_oldal.html';
    }
    $('#szamlalo').html(counter);
}
</script>

30
var-inFocus=true;
var计数器=30;
无功定时器;
$(文档).ready(函数(){
$(window.top).focus(函数(){
//$(window.top).focusin(函数(){
inFocus=true;
});
$(window.top).blur(函数(){
//$(window.top).focusout(函数(){
inFocus=false;
});
定时器=window.setInterval(“倒计时()”,1000);
});
函数倒计时()
{
如果(计数器>0)
{
if(inFocus)
计数器--;
}
其他的
{
窗口清除间隔(计时器);
window.location.href='masik_oldal.html';
}
$('#szamlo').html(计数器);
}
但各大浏览器对此的处理方式各不相同,opera是唯一一款可以正常工作的浏览器。在IE中,blur一点也没有收到,chrome和firefox只收到一次……这只是不同的js引擎实现,还是jquery中的某个东西?还是我在某个地方犯了个错误?

感谢您提出的任何想法。

事件不会在框架集树上冒泡。您需要为每个窗口(框架)安装单独的处理程序。

为什么框架?它们是单独的文档,因此这可能会很棘手。您可以使用一个文档来实现同样的效果。