Skip to content

Commit c461c11

Browse files
author
Timothy Johnson
committed
Improved offset calculations
1 parent 19371ff commit c461c11

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/client/highlight.js

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,22 @@ function getOffset(element) {
4949
left: element.offsetLeft - margin.left
5050
}
5151

52-
while ((element = element.offsetParent)) {
53-
rect.top += element.offsetTop
54-
rect.left += element.offsetLeft
52+
let parent = element
53+
while (
54+
(parent =
55+
parent.offsetParent || parent.ownerDocument.defaultView.frameElement)
56+
) {
57+
rect.top += parent.offsetTop
58+
rect.left += parent.offsetLeft
59+
}
60+
61+
parent = element
62+
while (
63+
(parent =
64+
parent.parentElement || parent.ownerDocument.defaultView.frameElement)
65+
) {
66+
rect.top -= parent.scrollTop
67+
rect.left -= parent.scrollLeft
5568
}
5669

5770
rect.right = rect.left + rect.width

0 commit comments

Comments
 (0)