Skip to content

Commit

Permalink
Fixes error when getting offset of element not in document
Browse files Browse the repository at this point in the history
This fixes an error which is called out in jQuery Migrate but
probably never happens in real life. This is because we call
`jQuery.fn.offset` without checking if the element is in the
document. Based on testing done here and within the MediaWiki
team, I'm pretty sure jQuery never actually implemented explicit
checks and this jQuery Migrate warning is just to cover the case
where a browser might start returning inconsistnet results. And
we could at least reproduce the inconsistency, so that's something.

We now default the offset to 0/0 if the parent element happens to
not be in the document. This appears to be what jQuery used to do
in the past, and generally appears to be what people expect in
these cases.

This fixes #5584.
  • Loading branch information
kevin-brown committed Sep 19, 2019
1 parent 233424d commit 2c5467b
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/js/select2/dropdown/attachBody.js
Expand Up @@ -190,7 +190,14 @@ define([
$offsetParent = $offsetParent.offsetParent();
}

var parentOffset = $offsetParent.offset();
var parentOffset = {
top: 0,
left: 0
};

if ($.contains(document.body, $offsetParent[0])) {
parentOffset = $offsetParent.offset();
}

css.top -= parentOffset.top;
css.left -= parentOffset.left;
Expand Down

0 comments on commit 2c5467b

Please sign in to comment.