diff options
-rw-r--r-- | Userland/Libraries/LibWeb/HTML/HTMLElement.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLElement.cpp index 097e16cda2..390e5728b2 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLElement.cpp @@ -141,6 +141,9 @@ String HTMLElement::inner_text() // // https://drafts.csswg.org/cssom-view/#dom-htmlelement-offsettop int HTMLElement::offset_top() const { + // NOTE: Ensure that layout is up-to-date before looking at metrics. + const_cast<DOM::Document&>(document()).update_layout(); + if (is<HTML::HTMLBodyElement>(this) || !layout_node() || !parent_element() || !parent_element()->layout_node()) return 0; auto position = layout_node()->box_type_agnostic_position(); @@ -151,6 +154,9 @@ int HTMLElement::offset_top() const // https://drafts.csswg.org/cssom-view/#dom-htmlelement-offsetleft int HTMLElement::offset_left() const { + // NOTE: Ensure that layout is up-to-date before looking at metrics. + const_cast<DOM::Document&>(document()).update_layout(); + if (is<HTML::HTMLBodyElement>(this) || !layout_node() || !parent_element() || !parent_element()->layout_node()) return 0; auto position = layout_node()->box_type_agnostic_position(); |