Merge pull request #2093 from chillu/pulls/resize-infinite

BUG Resize infinite loops in IE8 (fixes #575)
This commit is contained in:
Sam Minnée 2013-06-18 21:25:57 -07:00
commit 31a138b636
2 changed files with 39 additions and 3 deletions

View File

@ -4,6 +4,25 @@ jQuery.noConflict();
* File: LeftAndMain.js * File: LeftAndMain.js
*/ */
(function($) { (function($) {
var windowWidth, windowHeight;
$(window).bind('resize.leftandmain', function(e) {
// Entwine's 'fromWindow::onresize' does not trigger on IE8. Use synthetic event.
var cb = function() {$('.cms-container').trigger('windowresize');};
// Workaround to avoid IE8 infinite loops when elements are resized as a result of this event
if($.browser.msie && parseInt($.browser.version, 10) < 9) {
var newWindowWidth = $(window).width(), newWindowHeight = $(window).height();
if(newWindowWidth != windowWidth || newWindowHeight != windowHeight) {
windowWidth = newWindowWidth;
windowHeight = newWindowHeight;
cb();
}
} else {
cb();
}
});
// setup jquery.entwine // setup jquery.entwine
$.entwine.warningLevel = $.entwine.WARN_LEVEL_BESTPRACTISE; $.entwine.warningLevel = $.entwine.WARN_LEVEL_BESTPRACTISE;
$.entwine('ss', function($) { $.entwine('ss', function($) {
@ -133,7 +152,10 @@ jQuery.noConflict();
fromWindow: { fromWindow: {
onstatechange: function(){ this.handleStateChange(); }, onstatechange: function(){ this.handleStateChange(); },
onresize: function(){ this.redraw(); } },
'onwindowresize': function() {
this.redraw();
}, },
'from .cms-panel': { 'from .cms-panel': {

View File

@ -4,8 +4,22 @@
* On resize of any close the open treedropdownfields * On resize of any close the open treedropdownfields
* as we'll need to redo with widths * as we'll need to redo with widths
*/ */
$(window).resize(function() { var windowWidth, windowHeight;
$('.TreeDropdownField').closePanel(); $(window).bind('resize.treedropdownfield', function() {
// Entwine's 'fromWindow::onresize' does not trigger on IE8. Use synthetic event.
var cb = function() {$('.TreeDropdownField').closePanel();};
// Workaround to avoid IE8 infinite loops when elements are resized as a result of this event
if($.browser.msie && parseInt($.browser.version, 10) < 9) {
var newWindowWidth = $(window).width(), newWindowHeight = $(window).height();
if(newWindowWidth != windowWidth || newWindowHeight != windowHeight) {
windowWidth = newWindowWidth;
windowHeight = newWindowHeight;
cb();
}
} else {
cb();
}
}); });
var strings = { var strings = {