Skip to content
Permalink
Browse files
Ref #8908. Update IE9 css clone fix. Close gh-1120.
  • Loading branch information
markelog authored and dmethvin committed Jan 8, 2013
1 parent c27d8e2 commit ce67f0c
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 14 deletions.
@@ -213,8 +213,8 @@ jQuery.extend({

// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
// but it would mean to define eight (for every problematic property) identical functions
if ( value === "" && name.indexOf("background") === 0 ) {
value = " ";
if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
style[ name ] = "inherit";
}

// If a hook was provided, use that value, otherwise just set the specified value
@@ -138,6 +138,10 @@ jQuery.support = (function() {
support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
}

div.style.backgroundClip = "content-box";
div.cloneNode().style.backgroundClip = "";
support.clearCloneStyle = div.style.backgroundClip === "content-box";

// Run tests that need a body at doc ready
jQuery(function() {
var container, marginDiv, tds,
@@ -923,7 +923,7 @@ test( "css opacity consistency across browsers (#12685)", function() {
equal( Math.round( el.css("opacity") * 100 ), 20, "remove opacity override" );
});

asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Element's Style (#8908)", 16, function() {
asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Element's Style (#8908)", 24, function() {
var baseUrl = document.location.href.replace( /([^\/]*)$/, "" ),
styles = [{
name: "backgroundAttachment",
@@ -961,7 +961,7 @@ asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Eleme
expected: [ "auto auto" ]
}];

jQuery.each( styles, function(index, style) {
jQuery.each(styles, function( index, style ) {
var $clone, $clonedChildren,
$source = jQuery( "#firstp" ),
source = $source[ 0 ],
@@ -972,6 +972,7 @@ asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Eleme
if ( source.style[ style.name ] === undefined ) {
ok( true, style.name + ": style isn't supported and therefore not an issue" );
ok( true );
ok( true );
return true;
}

@@ -985,6 +986,8 @@ asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Eleme
$clonedChildren.css( style.name, "" );

window.setTimeout(function() {
notEqual( $clone.css( style.name ), style.value[ 0 ], "Cloned css was changed" );

ok( jQuery.inArray( $source.css( style.name ) !== -1, style.value ),
"Clearing clone.css() doesn't affect source.css(): " + style.name +
"; result: " + $source.css( style.name ) +
@@ -81,7 +81,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
"doesNotIncludeMarginInBodyOffset":true
"doesNotIncludeMarginInBodyOffset":true,
"clearCloneStyle": true
};
} else if ( /opera.*version\/12\.1/i.test( userAgent ) ) {
expected = {
@@ -114,7 +115,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
"doesNotIncludeMarginInBodyOffset":true
"doesNotIncludeMarginInBodyOffset":true,
"clearCloneStyle": true
};
} else if ( /msie 10\.0/i.test( userAgent ) ) {
expected = {
@@ -147,7 +149,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
"doesNotIncludeMarginInBodyOffset":true
"doesNotIncludeMarginInBodyOffset":true,
"clearCloneStyle": false
};
} else if ( /msie 9\.0/i.test( userAgent ) ) {
expected = {
@@ -180,7 +183,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":false,
"doesNotIncludeMarginInBodyOffset":true
"doesNotIncludeMarginInBodyOffset":true,
"clearCloneStyle": false
};
} else if ( /msie 8\.0/i.test( userAgent ) ) {
expected = {
@@ -213,7 +217,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":false,
"ajax":true,
"cors":false,
"doesNotIncludeMarginInBodyOffset":true
"doesNotIncludeMarginInBodyOffset":true,
"clearCloneStyle": true
};
} else if ( /msie 7\.0/i.test( userAgent ) ) {
expected = {
@@ -246,7 +251,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"shrinkWrapBlocks": false,
"submitBubbles": false,
"tbody": false,
"style": false
"style": false,
"clearCloneStyle": true
};
} else if ( /msie 6\.0/i.test( userAgent ) ) {
expected = {
@@ -279,7 +285,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":false,
"ajax":true,
"cors":false,
"doesNotIncludeMarginInBodyOffset":true
"doesNotIncludeMarginInBodyOffset":true,
"clearCloneStyle": true
};
} else if ( /5\.1\.1 safari/i.test( userAgent ) ) {
expected = {
@@ -312,7 +319,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
"doesNotIncludeMarginInBodyOffset":true
"doesNotIncludeMarginInBodyOffset":true,
"clearCloneStyle": true
};
} else if ( /firefox/i.test( userAgent ) ) {
expected = {
@@ -345,13 +353,14 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
"doesNotIncludeMarginInBodyOffset":true
"doesNotIncludeMarginInBodyOffset":true,
"clearCloneStyle": true
};
}

if ( expected ) {
test("Verify that the support tests resolve as expected per browser", function() {
expect( 30 );
expect( 31 );

for ( var i in expected ) {
if ( jQuery.ajax || i !== "ajax" && i !== "cors" ) {

0 comments on commit ce67f0c

Please sign in to comment.