2017-07-28 16 views
-1

ユーザがタブ/ウィンドウを切り替えてから戻ると私のホームページが自動的に更新されます。 これはタブ/ウィンドウの切り替えには有効ですが、その間にタブの切り替え回数に関係なく、5分または10分ごとに発生します。リロードページタブ/ウィンドウに戻ってからx分だけ戻った後

var hidden, visibilityChange; 
if (typeof document.hidden !== "undefined") { 
    hidden = "hidden"; 
    visibilityChange = "visibilitychange"; 
} else if (typeof document.msHidden !== "undefined") { 
    hidden = "msHidden"; 
    visibilityChange = "msvisibilitychange"; 
} else if (typeof document.webkitHidden !== "undefined") { 
    hidden = "webkitHidden"; 
    visibilityChange = "webkitvisibilitychange"; 
} 

function handleVisibilityChange() { 
    if (!document[hidden]) { 
     location.href = location.href;} 
}; 

document.addEventListener(visibilityChange, handleVisibilityChange, false); 

助けてください。ありがとう。

答えて

0

ユーザーがタブを切り替えた場合、イベントの下の例ではsetTimoutを使用知るために変数を作成し、5秒

var hidden, visibilityChange; 
 
if(typeof document.hidden !== "undefined") { 
 
    hidden = "hidden"; 
 
    visibilityChange = "visibilitychange"; 
 
} 
 
else if(typeof document.msHidden !== "undefined") { 
 
    hidden = "msHidden"; 
 
    visibilityChange = "msvisibilitychange"; 
 
} 
 
else if(typeof document.webkitHidden !== "undefined") { 
 
    hidden = "webkitHidden"; 
 
    visibilityChange = "webkitvisibilitychange"; 
 
} 
 
var tabSwitched = false, 
 
    leaveTime = 0, 
 
    timerHandle; 
 

 
function doTimer() { 
 
    timerHandle = setTimeout(function() { 
 
    doTimer(); 
 
    leaveTime++; 
 
    }, 1000); 
 
} 
 

 
function handleVisibilityChange() { 
 
    if(leaveTime === 0){ 
 
    doTimer(); 
 
    } 
 
    
 
    if(!document[hidden] && leaveTime > 5) { 
 
    console.log('leaveTime: ' + leaveTime + ' seconds, do action'); 
 
    clearTimeout(timerHandle); 
 
    leaveTime = 0; 
 
    } 
 
    else if(!document[hidden] && leaveTime < 5){ 
 
    console.log('tab switched before 5 seconds'); 
 
    clearTimeout(timerHandle); 
 
    leaveTime = 0; 
 
    } 
 
} 
 

 
document.addEventListener(visibilityChange, handleVisibilityChange, false);
<p id="wait">switch the tab and wait...</w>

+0

感謝した後、起動します。これはうまくいきますが、ユーザーが戻るときに発射するまで5秒間待ちます。私は実際に彼らが戻ってすぐに発射することを望んでいますが、5秒以内に前後に切り替えた場合は発射しません。 – drizzler

+0

更新の回答 – ewwink

+0

ありがとう!うまくいく。 – drizzler

関連する問題