Bahsedilen pencere yeniden boyutlandırma işlevlerinin yanı sıra, yeniden boyutlandırma olaylarının, olayları açığa çıkarmadan kullanıldığında çok fazla tetiklendiğini anlamak önemlidir.
Paul Irish, yeniden boyutlandırma çağrılarını büyük ölçüde azaltan mükemmel bir işleve sahiptir. Kullanımı çok önerilir. Çapraz tarayıcı çalışır. Geçen gün IE8 test ve hepsi iyiydi.
http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/
Farkı görmek için demoyu kontrol ettiğinizden emin olun .
İşte tamlık işlevi.
(function($,sr){
// debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced () {
var obj = this, args = arguments;
function delayed () {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
}
// smartresize
jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
})(jQuery,'smartresize');
// usage:
$(window).smartresize(function(){
// code that takes it easy...
});