関数が直ちに呼び出される関数式として実行される場合、グローバル変数はなく、ローカルスクリプトが破壊されることはありません。もちろん、ユーザーがあなたのコードを読んで偽装するのを止めるものは何もありませんが、javascriptとは何かがこのような攻撃に公開されています。
他の人は言っているように、クロックに基づいて要求を検証するためにサーバーを使用しますが、保証するためにサーバーに依存しないでください。ここでは開始時間からの単純なカウントダウンがあります。そのため、デイリー実行の試みは機能しません。どちらの場合も、リセットまたは変更するグローバル変数はありません。
(function(){
// Place to write count down
var el = document.getElementById('secondsLeft');
var starttime,
timeout,
limit = 20; // Timelimit in seconds
// Function to run about every second
function nextTick() {
var d = new Date();
// Set start time the first time
if (!starttime) starttime = d.getTime();
var diff = d.getTime() - starttime;
// Only run for period
if (diff < (limit * 1000)) {
el.innerHTML = limit - (diff/1000 | 0);
} else {
// Time's up
el.innerHTML = 0;
clearTimeout(timeout);
}
}
// Kick it off
timeout = window.setInterval(nextTick, 1000);
}());
最初の1つでは、あまりにも多くのajaxリクエストがあります。かなりの帯域幅の無駄。ではない? 2番目は良いと思われる。それを実現することを楽しみにしています。 – Shubham