Debounced resize() jQuery plugin for smart resize
Posted on October 22, 2012 | 1 Comment
If you’ve ever attached an event handler to the window’s resize event, you have probably noticed that while Firefox fires the event slow and sensibly, IE and Webkit go totally spastic.
- In IE, Safari, and Chrome many resize events fire as long as the user continues resizing the window.
- Opera uses as many resize events, but fires them all at the end of the resizing.
- Firefox fires one resize event at the end of the resizing.
Basically debouncing will fire your function after a threshold of time (e.g. 100ms) has elapsed since the last time it’s tried to fire. Throttling would withhold subsequent firings, but debouncing waits for the last one and runs that.
(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... });
Category: jQuery, jQuery Examples, jQuery Performance, jQuery Tutorials
Tags: jQuery | jQuery Examples | jQuery Plugin | jQuery resize
Tags: jQuery | jQuery Examples | jQuery Plugin | jQuery resize
Comments
One Response to “Debounced resize() jQuery plugin for smart resize”
Leave a Reply
You must be logged in to post a comment.
October 16th, 2014 @ 4:09 am
Search Engine Optimization
Debounced resize() jQuery plugin for smart resize | Relax Breath of Solution.