0

我想设置一个超时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>

即使浏览器失去焦点,它也会以某种方式重定向。

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

谢谢你。

4

1 回答 1

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
});
于 2014-04-21T22:06:52.877 回答