Bug #7608 elem.runtimeStyle throws exception in Opera

This commit is contained in:
rwldrn 2011-01-05 13:32:59 -05:00
parent cbf591152c
commit 8099cdce80
2 changed files with 30 additions and 4 deletions

View file

@ -263,8 +263,9 @@ if ( document.defaultView && document.defaultView.getComputedStyle ) {
if ( document.documentElement.currentStyle ) {
currentStyle = function( elem, name ) {
var left, rsLeft,
var left,
ret = elem.currentStyle && elem.currentStyle[ name ],
rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
style = elem.style;
// From the awesome hack by Dean Edwards
@ -275,17 +276,20 @@ if ( document.documentElement.currentStyle ) {
if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
// Remember the original values
left = style.left;
rsLeft = elem.runtimeStyle.left;
// Put in the new values to get a computed value out
if ( rsLeft ) {
elem.runtimeStyle.left = elem.currentStyle.left;
}
style.left = name === "fontSize" ? "1em" : (ret || 0);
ret = style.pixelLeft + "px";
// Revert the changed values
style.left = left;
if ( rsLeft ) {
elem.runtimeStyle.left = rsLeft;
}
}
return ret === "" ? "auto" : ret;
};

View file

@ -320,3 +320,25 @@ test(":visible selector works properly on children with a hidden parent (bug #45
jQuery('#table').css('display', 'none').html('<tr><td>cell</td><td>cell</td></tr>');
equals(jQuery('#table td:visible').length, 0, "hidden cell children not perceived as visible");
});
test("internal ref to elem.runtimeStyle (bug #7608)", function () {
expect(1);
var result = true,
val = 10;
jQuery('<div id="bug7608" style="width:200px;border:solid 1px red;">' +
'<div id="test" style="width:0%; background:#000;">&nbsp;</div></div>').appendTo("body");
try {
// the bug is located within src/css.js
jQuery("#bug7608 #test").animate( { width: val }, 1000);
} catch (e) {
result = false;
}
ok( result, "elem.runtimeStyle does not throw exception" );
jQuery("#bug7608").remove();
});