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>

ブラウザがフォーカスされていなくても、どういうわけかリダイレクトされます。

画面が Web ブラウザーにフォーカスしていない場合、リダイレクトを停止する必要があります。

ありがとうございました。

4

1 に答える 1

0

どうやら、オブジェクトのblurイベントを処理する唯一の方法は、を使用することです。これを行う古いハンドラーを維持しようとすることができます。windowwindow.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 に答える