0

好的,我的网站上有一个页面,客户必须在其中查看广告(网站)20 秒。我在 iframe 标记中显示他必须查看的这个网站。及以上我有一个 20 秒的倒数计时器。

我还确保当窗口失去焦点时,计时器停止。确保客户在实际查看网站。

但我有一个问题。当客户端在 iframe 中单击网站上的某些内容时,计数器实际上会停止(这意味着它失去了焦点)。但我不希望这种情况发生,我希望计时器停止倒计时,只有当他转到另一个水龙头或另一个窗口时。但如果他点击 iframe 中网站中的链接,我希望它继续计数。

这是我使用的代码:

<html>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
var myInterval;
var seconds=20;

$(document).ready(function () {
    $(window).focus(function () {
        clearInterval(myInterval); // Clearing interval if for some reason it has not been cleared yet
           if (!flag)
           { myInterval = setInterval(tick, 1000);}
    }).blur(function () {
        clearInterval(myInterval); // Clearing interval on window blur
    });
myInterval = setInterval(tick, 1000);
});
function tick()
{
      display();

        if (seconds>0)
        {
         seconds--;
        }
        else
        {
          document.getElementById('TrafficHeader').innerHTML +="<?php include_once('Code.php'); 
          ?>";
          clearInterval(myInterval);
        }
}
function display()
{
   $("#TrafficHeader").html(seconds);
}
</script>
<div id="TrafficHeader" style="height:100px; background-color:grey; padding:20px;"></div>
<iframe src="http://www.website.com" height="100%" width="100%" frameborder="0">
</iframe>
</html>

任何帮助将不胜感激在此先感谢

4

1 回答 1

1

Try using focusin and focusout instead of just focus and blur. And adjust your logic accordingly to accomodate the multiple focusin fires.. Something like

$(window).focusout(function() {
  window.isStillActive = false;
  ...
}
$(window).focusin(function() {
  if (!window.isStillActive) {
    ...
    clearTimeout();
    ...
    window.isStillActive = true;
  }
}
于 2012-09-23T17:20:49.673 回答