Bên cạnh các chức năng thay đổi kích thước cửa sổ được đề cập, điều quan trọng là phải hiểu rằng các sự kiện thay đổi kích thước sẽ kích hoạt rất nhiều nếu được sử dụng mà không làm suy giảm các sự kiện.
Paul Irish có một chức năng tuyệt vời công bố các cuộc gọi thay đổi kích thước rất nhiều. Rất khuyến khích sử dụng. Hoạt động đa trình duyệt. Đã thử nghiệm nó trong IE8 vào một ngày khác và tất cả đều ổn.
http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/
Hãy chắc chắn kiểm tra bản demo để thấy sự khác biệt.
Đây là chức năng cho sự hoàn chỉnh.
(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...
});