【问题标题】:Check if windows/page/document/iframe has focus检查 windows/page/document/iframe 是否有焦点
【发布时间】:2013-07-13 11:14:02
【问题描述】:

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

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)

我为此发疯了,因为我尝试了很多东西,但都没有奏效,我真的需要这方面的帮助。
谢谢!

【问题讨论】:

  • 您可能在 Chrome 中收到错误的原因有很多,但这并不是说您无法修复它 - 请参阅answer。实际上,它所做的只是试图保护您免受潜在的 XSS 攻击,我很确定您可以强制浏览器忽略错误并继续。
  • 我想花钱请人编写一个脚本来完成这个任务。我应该如何进行?
  • 1) 转到freedomsponsors.org 并创建一个帐户 2) 单击赞助新问题,选中“检查是否要创建与任何开源项目无关的个人请求”复选框 3 ) 描述你的问题并设置你的赏金 4) 做广告

标签: javascript jquery iframe focus


【解决方案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; 并让用户点击页面上的某处。

【讨论】:

    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多