Here is a small example using pure (without jQuery, etc. dependencies) Javascript.
It uses mouseup and keyup handlers and optional intervall to detect changes.
var detectResize = (function() { function detectResize(id, intervall, callback) { this.id = id; this.el = document.getElementById(this.id); this.callback = callback || function(){}; if (this.el) { var self = this; this.width = this.el.clientWidth; this.height = this.el.clientHeight; this.el.addEventListener('mouseup', function() { self.detectResize(); }); this.el.addEventListener('keyup', function() { self.detectResize(); }); if(intervall) setInterval(function() { self.detectResize(); }, intervall); } return null; } detectResize.prototype.detectResize = function() { if (this.width != this.el.clientWidth || this.height != this.el.clientHeight) { this.callback(this); this.width = this.el.clientWidth; this.height = this.el.clientHeight; } }; return detectResize; })();
Usage: new detectResize(element-id, intervall in ms or 0, callback function)
Example:
<textarea id="mytextarea"></textarea> <script type="text/javascript"> var mytextarea = new detectResize('mytextarea', 500, function() { alert('changed'); }); </script>
See jsfiddle.net/pyaNS in action.
source share