diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
index ecec8b66287..2a573ce11af 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
@@ -1147,7 +1147,8 @@ void HTMLInputElement::did_receive_focus()
if (m_placeholder_text_node)
m_placeholder_text_node->invalidate_style(DOM::StyleInvalidationReason::DidReceiveFocus);
- document().set_cursor_position(DOM::Position::create(realm(), *m_text_node, 0));
+ if (auto cursor = document().cursor_position(); !cursor || m_text_node != cursor->node())
+ document().set_cursor_position(DOM::Position::create(realm(), *m_text_node, m_text_node->length()));
}
void HTMLInputElement::did_lose_focus()
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.cpp
index 04412c87de1..4d0b5dcd304 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.cpp
@@ -77,7 +77,8 @@ void HTMLTextAreaElement::did_receive_focus()
if (m_placeholder_text_node)
m_placeholder_text_node->invalidate_style(DOM::StyleInvalidationReason::DidReceiveFocus);
- document().set_cursor_position(DOM::Position::create(realm(), *m_text_node, 0));
+ if (auto cursor = document().cursor_position(); !cursor || m_text_node != cursor->node())
+ document().set_cursor_position(DOM::Position::create(realm(), *m_text_node, 0));
}
void HTMLTextAreaElement::did_lose_focus()