基本的に 30 秒から 0 までカウントダウンし、0 でホームページにリダイレクトするスクリプトを実装しようとしています。ただし、私のスクリプトは Firefox でのみ機能し、Chrome と Safari では機能しないことに気付きました。これらのブラウザーでは、カウンターは 30 秒で「スタック」したままになり、HTML が更新されることはありませんが、リダイレクトは正常に機能します。私が何か間違ったことをしているのか、それとも setInterval がこの種の正しい方法ではないのかはわかりません。
<script>
var seconds = 31;
var counter = setInterval("timer()", 1000);
function timer() {
seconds = seconds - 1;
if (seconds < 0) {
setTimeout("location.href='http://www.homepage.com';", 100);
return;
}
updateTimer();
}
function updateTimer() {
document.getElementById('timer').innerHTML = "Redirecting in " + " " + seconds + " " + "seconds";
}
</script>
前もって感謝します!
編集:奇妙なことに、私のコード (およびすべてのコード) は JSFiddle で動作していますが、実際にページをレンダリングしているときに HTMLinner の「再描画」に失敗しています。秒はうまく変化しています(コンソールに出力しました)が、変化がレンダリングされていません。
最終編集: この問題は基本的に無効な CSS が原因でした。カウンターは写真の上で実行されていたと思います。スパンを相対的な位置に設定し、z-index を高くし、上部と下部の要素を設定しました。これがブロックではないものに受け入れられるとは思えません。