Demon’s Code

jQuery IE window.resize fix

by Nox on Nov.05, 2008, under JavaScript

Ich habe mich vor einigen Tagen mal wieder mit dem Internet Explorer herumgeschlagen. Anders als der Firefox triggert dieser das resize-Event nämlich während der Mausbewegung, und nicht erst wenn es abgeschlossen ist.

Dies bedeutet für eine AJAX Anwendung die das resize-Event abfängt Performanzprobleme, denn diese wird nun andauernd getriggert.

Da ich derzeit viel mit jQuery arbeite habe ich mir die Mühe gemacht einen Fix dafür zu schreiben.

if(jQuery.browser.msie) (function ($) {
	var bind = jQuery.fn.bind;
	jQuery.fn.bind = function( type, data, fn ) {
		if(type != "resize")
			return bind.apply(this, [type, data, fn]);
		var timer = 1;
		var args = null;
		var handler = function(e, y) {
			timer = 1;
			(fn || data).apply(this, args);
		};

		bind.apply(this, [type, data, function() {
			if (timer) clearTimeout(timer);
			args = arguments;
			timer = setTimeout(handler, 150);
		}]);
		return this;
	}
})(jQuery);

Was das Skript macht, es überschreibt im Falle das jQuery einen MS-IE findet. Es wird das alte bind abgespeichert und mit einer extra Funktion aufgerufen die erst bis 150 zählt bevor es das Event weiterleitet, sollte es zu früh getriggert werden dann fängt die Funktion wieder von vorne an zu zählen.

Problem gelöst.

No comments for this entry yet...

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...

Archives

All entries, chronologically...