你可以在網頁中使用Collate
對象。
function Collate(timeout) {
this.timeout = timeout || 1000;
}
Collate.prototype = {
time: 0,
idle: function() {
var t = new Date().getTime();
return (t - this.time > this.timeout && (this.time = t));
},
prefer: function(func) {
this.func = func;
clearTimeout(this.timer);
this.timer = setTimeout(func, this.timeout);
}
};
如果你想有一個函數運行一次,而不是在未來1秒鐘之內再次運行。 一樣,如果要防止用戶提交表單很多次了,你這樣做:
var timer = new Collate(3000); //3 seconds
button1.onclick = function() {
if(timer.idle()) {
button1.form.submit();
} else alert("Don't click too quickly!");
}
//or on the form tag
<script>var submitTimer = new Collate(3000);</script>
<form action="post" onsubmit="return submitTimer.idle();">
如果你希望一個觸發事件,多次,只希望它激發的最後一次反應。 一樣,如果你想有一個用戶完成輸入後進行搜索,你這樣做:
var timer = new Collate(700); //0.7 seconds
textfield1.onkeyup = function() {
timer.prefer(function() {
autocomplete.search(textfield1.value);
});
};
來處理這種情況的最好辦法是,以確保郵件要麼不堵塞,而不是事務性的。 – Raynos 2012-02-24 02:19:06