diff --git a/core/misc/form.es6.js b/core/misc/form.es6.js
index 96fc990f7c..352ebedb58 100644
--- a/core/misc/form.es6.js
+++ b/core/misc/form.es6.js
@@ -264,29 +264,31 @@
    *
    * @fires event:formFragmentLinkClickOrHashChange
    */
-  const handleFragmentLinkClickOrHashChange = (e) => {
-    let $target;
-
+  function handleFragmentLinkClickOrHashChange(e) {
+    let url;
     if (e.type === 'click') {
-      $target = e.currentTarget.location ? $(e.currentTarget.location.hash) : $(e.currentTarget.hash);
+      url = e.currentTarget.location ? e.currentTarget.location : e.currentTarget;
     }
     else {
-      $target = $(`#${location.hash.substr(1)}`);
+      url = location;
     }
+    const hash = url.hash.substr(1);
+    if (hash) {
+      const $target = $(`#${hash}`);
+      $('body').trigger('formFragmentLinkClickOrHashChange', [$target]);
 
-    $('body').trigger('formFragmentLinkClickOrHashChange', [$target]);
+      /**
+       * Clicking a fragment link or a hash change should focus the target
+       * element, but event timing issues in multiple browsers require a timeout.
+       */
+      setTimeout(() => $target.trigger('focus'), 300);
+    }
+  }
 
-    /**
-     * Clicking a fragment link or a hash change should focus the target
-     * element, but event timing issues in multiple browsers require a timeout.
-     */
-    setTimeout(() => {
-      $target.focus();
-    }, 300, $target);
-  };
+  const debouncedHandleFragmentLinkClickOrHashChange = debounce(handleFragmentLinkClickOrHashChange, 300, true);
 
   // Binds a listener to handle URL fragment changes.
-  $(window).on('hashchange.form-fragment', debounce(handleFragmentLinkClickOrHashChange, 300, true));
+  $(window).on('hashchange.form-fragment', debouncedHandleFragmentLinkClickOrHashChange);
 
   /**
    * Binds a listener to handle clicks on fragment links and absolute URL links
@@ -294,6 +296,6 @@
    * because clicking such links doesn't trigger a hash change when the fragment
    * is already in the URL.
    */
-  $(document).on('click.form-fragment', 'a[href*="#"]', debounce(handleFragmentLinkClickOrHashChange, 300, true));
+  $(document).on('click.form-fragment', 'a[href*="#"]', debouncedHandleFragmentLinkClickOrHashChange);
 
 }(jQuery, Drupal, Drupal.debounce));
diff --git a/core/misc/form.js b/core/misc/form.js
index b5689db611..c5ff17b7d0 100644
--- a/core/misc/form.js
+++ b/core/misc/form.js
@@ -125,23 +125,27 @@
     }
   };
 
-  var handleFragmentLinkClickOrHashChange = function handleFragmentLinkClickOrHashChange(e) {
-    var $target = void 0;
-
+  function handleFragmentLinkClickOrHashChange(e) {
+    var url = void 0;
     if (e.type === 'click') {
-      $target = e.currentTarget.location ? $(e.currentTarget.location.hash) : $(e.currentTarget.hash);
+      url = e.currentTarget.location ? e.currentTarget.location : e.currentTarget;
     } else {
-      $target = $('#' + location.hash.substr(1));
+      url = location;
     }
+    var hash = url.hash.substr(1);
+    if (hash) {
+      var $target = $('#' + hash);
+      $('body').trigger('formFragmentLinkClickOrHashChange', [$target]);
+
+      setTimeout(function () {
+        return $target.trigger('focus');
+      }, 300);
+    }
+  }
 
-    $('body').trigger('formFragmentLinkClickOrHashChange', [$target]);
-
-    setTimeout(function () {
-      $target.focus();
-    }, 300, $target);
-  };
+  var debouncedHandleFragmentLinkClickOrHashChange = debounce(handleFragmentLinkClickOrHashChange, 300, true);
 
-  $(window).on('hashchange.form-fragment', debounce(handleFragmentLinkClickOrHashChange, 300, true));
+  $(window).on('hashchange.form-fragment', debouncedHandleFragmentLinkClickOrHashChange);
 
-  $(document).on('click.form-fragment', 'a[href*="#"]', debounce(handleFragmentLinkClickOrHashChange, 300, true));
+  $(document).on('click.form-fragment', 'a[href*="#"]', debouncedHandleFragmentLinkClickOrHashChange);
 })(jQuery, Drupal, Drupal.debounce);
\ No newline at end of file
