From 572f5798d7d6d3e73cffe0bfabd6e85542fde43f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Mon, 7 Apr 2014 21:25:24 +0200 Subject: [PATCH 1/1] =?utf8?q?Une=20fois=20la=20page=20charg=C3=A9e,=20man?= =?utf8?q?ifestement,=20toutes=20les=20tailles=20ne=20sont=20pas=20compl?= =?utf8?q?=C3=A8tement=20stables=E2=80=A6=20On=20ajoute=20un=20polling=20p?= =?utf8?q?our=20contourner=20le=20probl=C3=A8me.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- skins/photo_film_viewer.js | 44 ++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/skins/photo_film_viewer.js b/skins/photo_film_viewer.js index 2ebe6ca..5ba1b5b 100644 --- a/skins/photo_film_viewer.js +++ b/skins/photo_film_viewer.js @@ -17,6 +17,7 @@ var DEFAULT_IMAGE_SIZES = [500, 600, 800]; FilmSlider = function(filmBar, slider, ctxInfos, image, toolbar, breadcrumbs) { var thisSlider = this; this.filmBar = filmBar; + this.filmBarWidth = getObjectWidth(this.filmBar); var film = filmBar.firstChild; if (film.nodeType === 3) { film = film.nextSibling; } this.film = film; @@ -78,13 +79,8 @@ FilmSlider = function(filmBar, slider, ctxInfos, image, toolbar, breadcrumbs) { FilmSlider.prototype.resizeSlider = function(evt) { - var filmBarWidth = getObjectWidth(this.filmBar); - if (!filmBarWidth) { - var thisSlider = this; - addListener(window, 'load', function(evt){thisSlider.resizeSlider(evt);}); - return; - } - + var filmBarWidth = this.filmBarWidth; + if (!filmBarWidth) { return; } var filmWidth = this.slideSize * this.filmLength; var sliderRatio = this.sliderRatio = filmBarWidth / filmWidth; var sliderWidth = filmBarWidth * sliderRatio; @@ -110,6 +106,39 @@ FilmSlider.prototype.resizeSlider = function(evt) { } }; +FilmSlider.prototype._checkSizeAfterLoad = function(evt) { + this._barSizes = []; + this.filmBarWidth = this._barSizes[this._barSizes.length] = getObjectWidth(this.filmBar); + this.resizeSlider(); + var self = this; + this._checkSizeIntervalId = setInterval(function(evt){self._checkSize(evt);}, 25); + setTimeout(function(evt){self._checkSizeStability();}, 250); +}; + +FilmSlider.prototype._checkSize = function(evt) { + this._barSizes[this._barSizes.length] = getObjectWidth(this.filmBar); + if (this._barSizes.length >= 2 && + this._barSizes[this._barSizes.length-2] !== this._barSizes[this._barSizes.length-1]) { + this.filmBarWidth = this._barSizes[this._barSizes.length-1]; + this.initialized = false; + this.resizeSlider(); + } +}; + +FilmSlider.prototype._checkSizeStability = function(evt) { + var self = this; + var i; + for (i=0 ; i