とのいくつかのインスタンスを使用する、私が作成したcodepen デモsetTimeout
がありsetInterval
ます。setInterval
ユーザーがページを離れた場合に問題があることがわかりました。
この間隔の実行中にページを離れると、数値が永遠に増加し続けることに気付くかもしれません。間隔は本質的にクリアされていません。それ以外の場合、これは問題なく機能します。
setInterval
内ののインスタンスの 1 つの例を次に示しますsetTimeout
。
setTimeout(function() {
var x = parseInt($one.text());
handle = setInterval(function() {
if (x > -5) {
x--;
$one.html(x + 'px');
}
else {
clearInterval(handle);
handle = null;
}
}, 200);
$box.animate({
boxShadow: '-5px 0 0 0 #333'
}, 2000);
}, 7000);
if/else ステートメントにclearInterval(handle)
との両方を追加しようとしましたが、ユーザーがページを離れた場合にクリアする間隔を取得できません。handle = null
これにアプローチできる他の方法はありますsetInterval
か?これは単なる JavaScript の制限ですか?
アップデート
奇妙なことに、x
値をログに記録すると、コンソールに -1 から -4 の数値が正しく表示されます。clearInterval
別のウィンドウから実行されませんか?