私はjQueryの本を読んでいて、例をしようとしています。この例では、画面上で稲妻が点滅し、その部分は正常に動作します。問題は、タブを切り替えてからスイッチバックすると、雷が連続して点滅し始めるということです。この問題はwindow.onblurとwindow.onfocusイベントを使って修正されるはずですが、動作しません。誰か私が間違っていることを見ることができますか?Javascript/jQueryがClearIntervalを動作させるように見えない
異なるIDを持つ3つの隠し雷画像と、それぞれをフラッシュする3つの異なる機能があります。 goLightning()は各関数の間隔を設定し、stopLightning()はその間隔をクリアする必要があります。その部分は私が知っているすべてのために働いていないようです。コードは次のとおりです。
$(document).ready(function(){
goLightning();
window.onblur = stopLightning;
window.onfocus = goLightning;
var int1; var int2; var int3;
// this function sets the lightning interval
function goLightning() {
int1 = setInterval(function() { lightning_one(); },4000);
int2 = setInterval(function() { lightning_two(); },5000);
int3 = setInterval(function() { lightning_three(); },7000);
}
// this function clears the lightning when the window isn't focused
function stopLightning() {
window.clearInterval(int1);
window.clearInterval(int2);
window.clearInterval(int3);
}
// these three functions make the lightning flash and seem to be working fine
function lightning_one() {
$("#container #lightning1").fadeIn(250).fadeOut(250);
}
function lightning_two() {
$("#container #lightning2").fadeIn(250).fadeOut(250);
}
function lightning_three() {
$("#container #lightning3").fadeIn(250).fadeOut(250);
}
});
これがなぜ機能しないのかわかりません。 stopLightning()が間隔をクリアしていないか、window.onblurが機能していないようです。とにかく、どんなフィードバックも役に立ちます。ありがとう!
簡単な質問は、動作しているかどうかを確認する唯一の方法が表示されない場合はどうしたらよいですか? –
私はタブを前後に切り替えてテストしていたのと同じように動作しているかどうかを確認していました。私はいつものようにアラートを使ってみましたが、うまくいきませんでした:) –