aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichał Gołębiowski <m.goleb@gmail.com>2013-03-04 05:20:25 +0100
committerDave Methvin <dave.methvin@gmail.com>2013-04-03 21:00:38 -0400
commit8db7d6f20b4226994e88d1cd9243743c492773f5 (patch)
treecd105375c138f6830062188c50bf2a942e736e19 /src
parent1205103a72db407bfbc0de3d9b78f1fd6a02520c (diff)
downloadjquery-8db7d6f20b4226994e88d1cd9243743c492773f5.tar.gz
jquery-8db7d6f20b4226994e88d1cd9243743c492773f5.zip
Fix #13543. offsetWidth is wrong on non-1 zoom. Close gh-1194.
Diffstat (limited to 'src')
-rw-r--r--src/core.js25
-rw-r--r--src/css.js21
-rw-r--r--src/support.js8
3 files changed, 30 insertions, 24 deletions
diff --git a/src/core.js b/src/core.js
index c0a32762d..66c60774b 100644
--- a/src/core.js
+++ b/src/core.js
@@ -781,7 +781,30 @@ jQuery.extend({
length ? fn( elems[0], key ) : emptyGet;
},
- now: Date.now
+ now: Date.now,
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations.
+ // Note: this method belongs to the css module but it's needed here for the support module.
+ // If support gets modularized, this method should be moved back to the css module.
+ swap: function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+ }
});
jQuery.ready.promise = function( obj ) {
diff --git a/src/css.js b/src/css.js
index 8684dc265..522982b3f 100644
--- a/src/css.js
+++ b/src/css.js
@@ -277,27 +277,6 @@ jQuery.extend({
return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
}
return val;
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback, args ) {
- var ret, name,
- old = {};
-
- // Remember the old values, and insert the new ones
- for ( name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- ret = callback.apply( elem, args || [] );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
-
- return ret;
}
});
diff --git a/src/support.js b/src/support.js
index bc02ee862..b80957a39 100644
--- a/src/support.js
+++ b/src/support.js
@@ -75,12 +75,16 @@ jQuery.support = (function( support ) {
container = document.createElement("div");
container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
- // Check box-sizing and margin behavior
+ // Check box-sizing and margin behavior.
body.appendChild( container ).appendChild( div );
div.innerHTML = "";
div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
- support.boxSizing = div.offsetWidth === 4;
+ // Workaround failing boxSizing test due to offsetWidth returning wrong value
+ // with some non-1 values of body zoom, ticket #13543
+ jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
+ support.boxSizing = div.offsetWidth === 4;
+ });
support.doesNotIncludeMarginInBodyOffset = body.offsetTop !== 1;
// Use window.getComputedStyle because jsdom on node.js will break without it.