From bc31e9fe3b5a720c369826fe959f9830b98c2ccc Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Fri, 25 Sep 2015 14:27:23 +0800 Subject: [PATCH] Added deduplicatedHeaderId to avoid multiple same header id --- public/js/extra.js | 21 ++++++++++++++++++++- public/js/index.js | 1 + public/js/pretty.js | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/public/js/extra.js b/public/js/extra.js index aed97417e..f2fd6a723 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -322,7 +322,26 @@ function autoLinkify(view) { for (var level = 1; level <= 6; level++) { linkifyAnchors(level, contentBlock); } -}; +} + +function deduplicatedHeaderId(view) { + var headers = view.find(':header').toArray(); + for (var i = 0; i < headers.length; i++) { + var id = $(headers[i]).attr('id'); + if (!id) continue; + var duplicatedHeaders = view.find(':header[id=' + id + ']').toArray(); + for (var j = 0; j < duplicatedHeaders.length; j++) { + if (duplicatedHeaders[j] != headers[i]) { + var newId = id + j; + var $duplicatedHeader = $(duplicatedHeaders[j]); + $duplicatedHeader.attr('id', newId); + var $headerLink = $duplicatedHeader.find('> .header-link'); + $headerLink.attr('href', '#' + newId); + $headerLink.attr('title', newId); + } + } + } +} function scrollToHash() { var hash = location.hash; diff --git a/public/js/index.js b/public/js/index.js index 86bba7f5c..c414b0b50 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -1725,6 +1725,7 @@ function updateView() { lastResult = $(result).clone(); finishView(ui.area.view); autoLinkify(ui.area.view); + deduplicatedHeaderId(ui.area.view); generateToc('toc'); generateToc('toc-affix'); generateScrollspy(); diff --git a/public/js/pretty.js b/public/js/pretty.js index 52882e981..ad5655d6f 100644 --- a/public/js/pretty.js +++ b/public/js/pretty.js @@ -5,6 +5,7 @@ markdown.html(result.html()); $(document.body).show(); finishView(markdown); autoLinkify(markdown); +deduplicatedHeaderId(markdown); generateToc('toc'); generateToc('toc-affix'); smoothHashScroll();