diff --git a/tests/unit/position/position_core.js b/tests/unit/position/position_core.js index e03d4c111..5b1872af9 100644 --- a/tests/unit/position/position_core.js +++ b/tests/unit/position/position_core.js @@ -575,7 +575,14 @@ test( "collision: flip, with margin", function() { }); test( "within", function() { - expect( 6 ); + expect( 7 ); + + collisionTest({ + within: document + }, { + top: 10, + left: 10 + }, "within document" ); collisionTest({ within: "#within", diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js index f088fa0be..f304c1908 100644 --- a/ui/jquery.ui.position.js +++ b/ui/jquery.ui.position.js @@ -89,8 +89,10 @@ $.position = { return (cachedScrollbarWidth = w1 - w2); }, getScrollInfo: function( within ) { - var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ), - overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ), + var overflowX = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-x" ), + overflowY = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-y" ), hasOverflowX = overflowX === "scroll" || ( overflowX === "auto" && within.width < within.element[0].scrollWidth ), hasOverflowY = overflowY === "scroll" || @@ -102,10 +104,12 @@ $.position = { }, getWithinInfo: function( element ) { var withinElement = $( element || window ), - isWindow = $.isWindow( withinElement[0] ); + isWindow = $.isWindow( withinElement[0] ), + isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9; return { element: withinElement, isWindow: isWindow, + isDocument: isDocument, offset: withinElement.offset() || { left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(),