From: Thomas Meyer Date: Wed, 4 Sep 2013 22:13:53 +0000 (+0200) Subject: Position: Avoid reading overflow css on documents X-Git-Tag: 1.11.0-beta.1~110 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1bbbcc723c489d7ef7d72bb62564b8f07805c41c;p=jquery-ui.git Position: Avoid reading overflow css on documents Fixes #9533 Closes gh-1072 --- 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(),