2012-08-14 45 views
0

我想設置超時javascript。Javascript,window.addEventListener('blur')將不起作用

如果瀏覽器停留在瀏覽器上,它會重定向到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> 

不知怎的,它並重定向即使瀏覽器是失焦。

當屏幕不關注網頁瀏覽器時,我需要停止重定向。

謝謝。

+4

是錯字('fucntion',而不是'function')出現在你原來的代碼? – 2012-08-14 15:32:02

+0

我改變了錯字,但它仍然不會暫停重定向。 – Jake 2012-08-14 15:54:59

回答

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 
});