onresize イベントがトリガーされたときに関数を 1 回だけ実行しようとすると問題が発生します。この質問DOM onresize イベントを見てきましたが、jQuery を使用していないため、その関数がないと機能しません。助言がありますか?
質問する
6467 次
2 に答える
11
サイズ変更イベントは、サイズ変更操作中にフレームごとに 1 回呼び出されます。リサイズ終了時に呼び出す場合は、コールバック関数でタイマーをセットするだけ。
var timeOut = null;
window.onresize = function(){
if (timeOut != null)
clearTimeout(timeOut);
timeOut = setTimeout(function(){
// YOUR RESIZE CODE HERE
}, 500);
};
于 2012-06-21T21:57:30.553 に答える
4
underscoredebounce
の実装を使用できます。
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
if (immediate && !timeout) func.apply(context, args);
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
window.onresize = debounce(function() {
// Your code here
}, 500);
または、リンクされた質問のライブラリを使用してください。jQueryがなければ、Cowboy.debounce(...)
.
于 2012-06-21T21:56:25.843 に答える