Javascript,window.addEventListener('blur')不起作用

时间:2012-08-14 15:30:19

标签: javascript

我想设置超时javascript。

如果浏览器停留在浏览器上,它会重定向到fallbackLink。

如果浏览器失去焦点,它会使超时失效并且不会重定向到fallbackLink

这是我的剧本。

<script>
(function(){

var fallbackLink = '<?=$info['failed_url']?>'+window.location.search+window.location.hash;

var isiOS = navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone'),
    isAndroid = navigator.userAgent.match('Android');

if (isiOS) {
  document.getElementById('loader').src = '<?=$info['scheme']?>://'+window.location.search+window.location.hash;
}
var countdown = window.setTimeout(function (){
           window.location.replace(fallbackLink);
    }, 1000);

    window.addEventListener("blur", function(){
                window.clearTimeout(countdown)
    }, false);

  })();
</script>

即使浏览器没有焦点,它也会重定向。

当屏幕不关注网页浏览器时,我需要停止重定向。

谢谢。

1 个答案:

答案 0 :(得分:0)

显然,在blur个对象上处理window事件的唯一方法是使用window.onblur。 您可以尝试让旧处理程序执行此操作:

var concatFunctions = function(fn1, fn2){
  return function(){
    var args = Array.prototype.slice.call(arguments, 0);
    try{
      fn1.apply(this, args);
    } catch(err) { console.error(err); }
    fn2.apply(this, args);
  };
};
window.onblur = concatFunction(window.onblur, function(){
  // do your stuff
});