File: event/js/resize-window.js
/**
* Adds a window resize event that has its behavior normalized to fire at the
* end of the resize rather than constantly during the resize.
* @module event
* @submodule event-resize
*/
/**
* Old firefox fires the window resize event once when the resize action
* finishes, other browsers fire the event periodically during the
* resize. This code uses timeout logic to simulate the Firefox
* behavior in other browsers.
* @event windowresize
* @for YUI
*/
Y.Event.define('windowresize', {
on: (Y.UA.gecko && Y.UA.gecko < 1.91) ?
function (node, sub, notifier) {
sub._handle = Y.Event.attach('resize', function (e) {
notifier.fire(e);
});
} :
function (node, sub, notifier) {
// interval bumped from 40 to 100ms as of 3.4.1
var delay = Y.config.windowResizeDelay || 100;
sub._handle = Y.Event.attach('resize', function (e) {
if (sub._timer) {
sub._timer.cancel();
}
sub._timer = Y.later(delay, Y, function () {
notifier.fire(e);
});
});
},
detach: function (node, sub) {
if (sub._timer) {
sub._timer.cancel();
}
sub._handle.detach();
}
// delegate methods not defined because this only works for window
// subscriptions, so...yeah.
});