Skip to content

Commit 5d29640

Browse files
Merge pull request prototypejs#70 from rydenius/1339-hasLayout_IE-fix
Fix IE regression in `Element#setOpacity`. [#1339 state:resolved]
2 parents addd725 + aa39832 commit 5d29640

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

src/prototype/dom/dom.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2912,7 +2912,7 @@
29122912
}
29132913

29142914
function hasLayout_IE(element) {
2915-
if (!element.currentStyle.hasLayout)
2915+
if (!element.currentStyle || !element.currentStyle.hasLayout)
29162916
element.style.zoom = 1;
29172917
return element;
29182918
}

test/unit/dom_test.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,10 @@ new Test.Unit.Runner({
903903
this.assert(
904904
$('style_test_3').setOpacity(0.9999999).getStyle('opacity') > 0.999
905905
);
906-
906+
907+
// setting opacity before element was added to DOM
908+
this.assertEqual(0.5, new Element('div').setOpacity(0.5).getOpacity());
909+
907910
/*
908911
909912
IE <= 7 needs a `hasLayout` for opacity ("filter") to function properly
@@ -927,10 +930,9 @@ new Test.Unit.Runner({
927930

928931
if (ZOOM_AFFECT_HAS_LAYOUT) {
929932
this.assert($('style_test_4').setOpacity(0.5).currentStyle.hasLayout);
930-
this.assert(2, $('style_test_5').setOpacity(0.5).getStyle('zoom'));
931-
this.assert(0.5, new Element('div').setOpacity(0.5).getOpacity());
932-
this.assert(2, new Element('div').setOpacity(0.5).setStyle('zoom: 2;').getStyle('zoom'));
933-
this.assert(2, new Element('div').setStyle('zoom: 2;').setOpacity(0.5).getStyle('zoom'));
933+
this.assertEqual(1, $('style_test_5').setOpacity(0.5).getStyle('zoom'));
934+
this.assertEqual(2, new Element('div').setOpacity(0.5).setStyle('zoom: 2;').getStyle('zoom'));
935+
this.assertEqual(2, new Element('div').setStyle('zoom: 2;').setOpacity(0.5).getStyle('zoom'));
934936
}
935937
},
936938

0 commit comments

Comments
 (0)