diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 043c6a11c4fcfc652c525c63dbb66e8ab4e15e57..e43afbb4cc9bc403700d4287627c548361be8adf 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -89,6 +89,14 @@
     // Set the default path for all cookies to GitLab's root directory
     Cookies.defaults.path = gon.relative_url_root || '/';
 
+    // `hashchange` is not triggered when link target is already in window.location
+    $body.on('click', 'a[href^="#"]', function() {
+      var href = this.getAttribute('href');
+      if (href.substr(1) === gl.utils.getLocationHash()) {
+        setTimeout(gl.utils.handleLocationHash, 1);
+      }
+    });
+
     // prevent default action for disabled buttons
     $('.btn').click(function(e) {
       if ($(this).hasClass('disabled')) {
diff --git a/changelogs/unreleased/24876-page-jumps-to-wrong-position-when-clicking-a-comment-anchor.yml b/changelogs/unreleased/24876-page-jumps-to-wrong-position-when-clicking-a-comment-anchor.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c31c89dc4bc8f5f9d44b3c154edd387b65bc285f
--- /dev/null
+++ b/changelogs/unreleased/24876-page-jumps-to-wrong-position-when-clicking-a-comment-anchor.yml
@@ -0,0 +1,4 @@
+---
+title: ensure permalinks scroll to correct position on multiple clicks
+merge_request: 8046
+author: