Index: src/orca/scripts/toolkits/Gecko/script.py
===================================================================
--- src/orca/scripts/toolkits/Gecko/script.py	(revision 4260)
+++ src/orca/scripts/toolkits/Gecko/script.py	(working copy)
@@ -1284,6 +1284,20 @@
                    and self.isSameObject(event.source, orca_state.locusOfFocus):
                     return
 
+                # We are getting extraneous events that are not being caught
+                # by the above, and which are causing us to loop. See bug
+                # #552887. This is admittedly a rather broad check. However,
+                # if we're here it's because we're controlling the caret in
+                # which case we don't expect to get caret moved events of
+                # interest other than those mentioned above. Note that this
+                # check would presumably break item #2 above. However, the
+                # FF guys seem to have broken that for us. See bug 544771.
+                # Therefore, let's include this broad check for now and narrow
+                # it down once the same-page link issue is fixed.
+                #
+                if locusOfFocusRole in [pyatspi.ROLE_IMAGE, pyatspi.ROLE_LINK]:
+                    return
+
             elif self.isAriaWidget(event.source):
                 # Sometimes we get extra caret-moved events. See bug #471878
                 # and Mozilla bug #394318. However, we cannot do a blanket
