summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClement Ho <clemmakesapps@gmail.com>2017-02-07 17:53:42 +0000
committerClement Ho <clemmakesapps@gmail.com>2017-02-07 17:53:42 +0000
commitbc13687c7e374116e4830d004b82e9960d3a55cc (patch)
tree36a787c2c38442237d5b3616d4e14189d1bd4379
parent840072ec0491535a180a8d270327d37152b60295 (diff)
parentbcf81d82faf6db44a68d2c1148a693b59806057e (diff)
downloadgitlab-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.es63
-rw-r--r--changelogs/unreleased/fix-anchor-scrolling.yml4
-rw-r--r--spec/javascripts/lib/utils/common_utils_spec.js.es613
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');