diff options
author | Clement Ho <clemmakesapps@gmail.com> | 2017-02-07 17:53:42 +0000 |
---|---|---|
committer | Clement Ho <clemmakesapps@gmail.com> | 2017-02-07 17:53:42 +0000 |
commit | bc13687c7e374116e4830d004b82e9960d3a55cc (patch) | |
tree | 36a787c2c38442237d5b3616d4e14189d1bd4379 | |
parent | 840072ec0491535a180a8d270327d37152b60295 (diff) | |
parent | bcf81d82faf6db44a68d2c1148a693b59806057e (diff) | |
download | gitlab-ce-bc13687c7e374116e4830d004b82e9960d3a55cc.tar.gz |
Merge branch 'fix-anchor-scrolling' into 'master'
Fix broken anchor links when special characters are used
Closes #26778
See merge request !8961
-rw-r--r-- | app/assets/javascripts/lib/utils/common_utils.js.es6 | 3 | ||||
-rw-r--r-- | changelogs/unreleased/fix-anchor-scrolling.yml | 4 | ||||
-rw-r--r-- | spec/javascripts/lib/utils/common_utils_spec.js.es6 | 13 |
3 files changed, 20 insertions, 0 deletions
diff --git a/app/assets/javascripts/lib/utils/common_utils.js.es6 b/app/assets/javascripts/lib/utils/common_utils.js.es6 index 0ee29a75c62..1f735e13391 100644 --- a/app/assets/javascripts/lib/utils/common_utils.js.es6 +++ b/app/assets/javascripts/lib/utils/common_utils.js.es6 @@ -69,6 +69,9 @@ var hash = w.gl.utils.getLocationHash(); if (!hash) return; + // This is required to handle non-unicode characters in hash + hash = decodeURIComponent(hash); + var navbar = document.querySelector('.navbar-gitlab'); var subnav = document.querySelector('.layout-nav'); var fixedTabs = document.querySelector('.js-tabs-affix'); diff --git a/changelogs/unreleased/fix-anchor-scrolling.yml b/changelogs/unreleased/fix-anchor-scrolling.yml new file mode 100644 index 00000000000..43b3b9bf96e --- /dev/null +++ b/changelogs/unreleased/fix-anchor-scrolling.yml @@ -0,0 +1,4 @@ +--- +title: Fix broken anchor links when special characters are used +merge_request: 8961 +author: Andrey Krivko diff --git a/spec/javascripts/lib/utils/common_utils_spec.js.es6 b/spec/javascripts/lib/utils/common_utils_spec.js.es6 index fbb06f3948b..ff70664546d 100644 --- a/spec/javascripts/lib/utils/common_utils_spec.js.es6 +++ b/spec/javascripts/lib/utils/common_utils_spec.js.es6 @@ -41,6 +41,19 @@ require('~/lib/utils/common_utils'); }); }); + describe('gl.utils.handleLocationHash', () => { + beforeEach(() => { + window.history.pushState({}, null, '#definição'); + }); + + it('decodes hash parameter', () => { + spyOn(window.document, 'getElementById').and.callThrough(); + gl.utils.handleLocationHash(); + expect(window.document.getElementById).toHaveBeenCalledWith('definição'); + expect(window.document.getElementById).toHaveBeenCalledWith('user-content-definição'); + }); + }); + describe('gl.utils.getParameterByName', () => { beforeEach(() => { window.history.pushState({}, null, '?scope=all&p=2'); |