diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index ae904d52a..5fbe142e0 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -722,6 +722,7 @@ class Script(default.Script):
             return
 
         orca.setLocusOfFocus(None, context.obj, notifyScript=False)
+        self.utilities.scrollTo(context.obj, context.currentOffset)
         self.utilities.setCaretContext(context.obj, context.currentOffset)
 
     def inFocusMode(self):
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 4b59d9bbf..c92b0999b 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -379,6 +379,15 @@ class Utilities(script_utilities.Utilities):
         # TODO - JD: This is private.
         self._script._saveFocusedObjectInfo(obj)
 
+    def scrollTo(self, obj, offset):
+        text = self.queryNonEmptyText(obj)
+        if text:
+            # TODO: depending on user preference, use Text's scrollTo interface
+            # when it is implemented in atspi, to pass precise offset
+            c = text.obj.queryComponent()
+            if "scrollTo" in c.__dir__():
+                c.scrollTo(pyatspi.SCROLL_ANYWHERE)
+
     def getNextObjectInDocument(self, obj, documentFrame):
         if not obj:
             return None
