From 03ae1a59d8c20b95a6f2cd1cbe6f5aada7606153 Mon Sep 17 00:00:00 2001 From: Thomas Meyer Date: Thu, 5 Sep 2013 00:03:32 +0200 Subject: [PATCH 1/2] Position: using innerWidth/innerHeight properties to get window size. Fixed #9534 - positioning against an iframe's contentWindow calculates wrong positions --- tests/unit/position/position.html | 2 ++ tests/unit/position/position_core.js | 22 ++++++++++++++++++++++ ui/jquery.ui.position.js | 4 ++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/tests/unit/position/position.html b/tests/unit/position/position.html index f3b1ad86ca8..041f47b99c3 100644 --- a/tests/unit/position/position.html +++ b/tests/unit/position/position.html @@ -47,6 +47,8 @@
+ + diff --git a/tests/unit/position/position_core.js b/tests/unit/position/position_core.js index e03d4c11152..f7338403575 100644 --- a/tests/unit/position/position_core.js +++ b/tests/unit/position/position_core.js @@ -719,4 +719,26 @@ test( "bug #5280: consistent results (avoid fractional values)", function() { deepEqual( offset1, offset2 ); }); +test("bug #9534: position in iframe window", function() { + expect(1); + + var iframe = $("#bug-9534")[0]; + var iframeWindow = iframe.contentWindow; + var iframeBody = iframe.contentDocument.body; + + $(iframeBody).css({ + "width" : "30px", + "height" : "30px" + }); + + collisionTest({ + my : "center", + at : "center", + of : iframeWindow + }, { + top : 5, + left : 5 + }, "positioned to iframe window"); +}); + }( jQuery ) ); diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js index 21c3cef1b19..56aa642b4af 100644 --- a/ui/jquery.ui.position.js +++ b/ui/jquery.ui.position.js @@ -45,8 +45,8 @@ function getDimensions( elem ) { } if ( $.isWindow( raw ) ) { return { - width: elem.width(), - height: elem.height(), + width: (typeof raw.innerWidth === "number") ? raw.innerWidth : elem.width(), + height: (typeof raw.innerHeight === "number") ? raw.innerHeight : elem.height(), offset: { top: elem.scrollTop(), left: elem.scrollLeft() } }; } From 76cb40508f89779fc9f9c5fbe19bb80af52fbf15 Mon Sep 17 00:00:00 2001 From: Thomas Meyer Date: Thu, 5 Sep 2013 03:28:18 +0200 Subject: [PATCH 2/2] Position: addendum to Fixed #9534: reduced var statements for jslint --- tests/unit/position/position_core.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/unit/position/position_core.js b/tests/unit/position/position_core.js index f7338403575..b8a2e7eeae6 100644 --- a/tests/unit/position/position_core.js +++ b/tests/unit/position/position_core.js @@ -723,10 +723,8 @@ test("bug #9534: position in iframe window", function() { expect(1); var iframe = $("#bug-9534")[0]; - var iframeWindow = iframe.contentWindow; - var iframeBody = iframe.contentDocument.body; - $(iframeBody).css({ + $(iframe.contentDocument.body).css({ "width" : "30px", "height" : "30px" }); @@ -734,7 +732,7 @@ test("bug #9534: position in iframe window", function() { collisionTest({ my : "center", at : "center", - of : iframeWindow + of : iframe.contentWindow }, { top : 5, left : 5