4

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

检查窗口是否有焦点

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

问题:
1.我不能使用window.onblur或者window.onfocus因为用户可以在页面加载之前失去焦点并绕过这些命令。
2.我不能hasFocus()在 iframe 上使用,因为 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)

我对此感到疯狂,因为我尝试了很多东西,但都没有奏效,我真的需要帮助。
谢谢!

4

1 回答 1

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;让用户点击页面上的某个位置。

于 2013-07-28T11:22:31.970 回答