检查windows / page / document / iframe是否具有焦点

时间:2013-07-15 14:34:28

标签: javascript jquery iframe focus

我已经问了一个类似的问题,但我需要一个更具体的案例,所以我决定提出一个新问题,不要混淆。

Check if window has focus

1。我正在建立一个PTC网站,用户可以通过访问网站获得x秒的付款。
2。广告视图的工作方式如下:打开一个新页面,其中包含两个内容,即带有计数器的顶部栏和包含广告商网站的iframe。) 3。我想强制用户在广告客户付费的x秒内看到该页面。
4. 要检查用户是否正在查看该页面,IMO,我需要检查文档或iframe是否具有焦点。

问题:
1。我无法使用window.onblurwindow.onfocus,因为用户可能会在页面加载之前失去焦点并绕过这些命令。
2。我无法在iframe上使用hasFocus(),因为Chrome会抛出此错误:Blocked a frame with origin "xxx" from accessing a frame with origin "yyy". Protocols, domains, and ports must match.

我知道两个类似的网站可以实现这一点,但是他们的javascript非常奇怪,我无法理解一行。 (neobux.com和clixsense.com)

我为此疯狂,因为我已经尝试了很多东西而且没有一个工作,我真的需要帮助。
谢谢!

1 个答案:

答案 0 :(得分:1)

var has_focus = true;

function loading_time() {
    $(":focus").each(function() {
      if($(this).attr("id")=="iframeID") has_focus = true;
    });

    if(has_focus==true) alert('page has focus');
    else alert('page has not focus');

    setTimeout("loading_time()", 2000);
}

window.onblur = function(){  
    has_focus=false;  
}  
window.onfocus = function(){  
    has_focus=true;  
}

$(window).load(function(){
    setTimeout("loading_time()", 2000);
});

为了提高效率,您需要var has_focus = false;并让用户点击页面上的某个位置。