mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Position: Simplify fraction support test
Also makes the test lazy to avoid any potential layouts/recalculations during initialization. Fixes #9898 Ref #9899
This commit is contained in:
parent
dff1c74dd4
commit
3970e8c681
@ -41,6 +41,26 @@ var cachedScrollbarWidth, supportsOffsetFractions,
|
|||||||
rpercent = /%$/,
|
rpercent = /%$/,
|
||||||
_position = $.fn.position;
|
_position = $.fn.position;
|
||||||
|
|
||||||
|
// Support: IE <=9 only
|
||||||
|
supportsOffsetFractions = function() {
|
||||||
|
var element = $( "<div>" )
|
||||||
|
.css( "position", "absolute" )
|
||||||
|
.appendTo( "body" )
|
||||||
|
.offset( {
|
||||||
|
top: 1.5,
|
||||||
|
left: 1.5
|
||||||
|
} ),
|
||||||
|
support = element.offset().top === 1.5;
|
||||||
|
|
||||||
|
element.remove();
|
||||||
|
|
||||||
|
supportsOffsetFractions = function() {
|
||||||
|
return support;
|
||||||
|
};
|
||||||
|
|
||||||
|
return support;
|
||||||
|
};
|
||||||
|
|
||||||
function getOffsets( offsets, width, height ) {
|
function getOffsets( offsets, width, height ) {
|
||||||
return [
|
return [
|
||||||
parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
|
parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
|
||||||
@ -243,7 +263,7 @@ $.fn.position = function( options ) {
|
|||||||
position.top += myOffset[ 1 ];
|
position.top += myOffset[ 1 ];
|
||||||
|
|
||||||
// if the browser doesn't support fractions, then round for consistent results
|
// if the browser doesn't support fractions, then round for consistent results
|
||||||
if ( !supportsOffsetFractions ) {
|
if ( !supportsOffsetFractions() ) {
|
||||||
position.left = round( position.left );
|
position.left = round( position.left );
|
||||||
position.top = round( position.top );
|
position.top = round( position.top );
|
||||||
}
|
}
|
||||||
@ -475,45 +495,6 @@ $.ui.position = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// fraction support test
|
|
||||||
( function() {
|
|
||||||
var testElement, testElementParent, testElementStyle, offsetLeft, i,
|
|
||||||
body = document.getElementsByTagName( "body" )[ 0 ],
|
|
||||||
div = document.createElement( "div" );
|
|
||||||
|
|
||||||
//Create a "fake body" for testing based on method used in jQuery.support
|
|
||||||
testElement = document.createElement( body ? "div" : "body" );
|
|
||||||
testElementStyle = {
|
|
||||||
visibility: "hidden",
|
|
||||||
width: 0,
|
|
||||||
height: 0,
|
|
||||||
border: 0,
|
|
||||||
margin: 0,
|
|
||||||
background: "none"
|
|
||||||
};
|
|
||||||
if ( body ) {
|
|
||||||
$.extend( testElementStyle, {
|
|
||||||
position: "absolute",
|
|
||||||
left: "-1000px",
|
|
||||||
top: "-1000px"
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
for ( i in testElementStyle ) {
|
|
||||||
testElement.style[ i ] = testElementStyle[ i ];
|
|
||||||
}
|
|
||||||
testElement.appendChild( div );
|
|
||||||
testElementParent = body || document.documentElement;
|
|
||||||
testElementParent.insertBefore( testElement, testElementParent.firstChild );
|
|
||||||
|
|
||||||
div.style.cssText = "position: absolute; left: 10.7432222px;";
|
|
||||||
|
|
||||||
offsetLeft = $( div ).offset().left;
|
|
||||||
supportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11;
|
|
||||||
|
|
||||||
testElement.innerHTML = "";
|
|
||||||
testElementParent.removeChild( testElement );
|
|
||||||
} )();
|
|
||||||
|
|
||||||
} )();
|
} )();
|
||||||
|
|
||||||
return $.ui.position;
|
return $.ui.position;
|
||||||
|
Loading…
Reference in New Issue
Block a user