Skip to content

Commit bc31e9f

Browse files
committed
Added deduplicatedHeaderId to avoid multiple same header id
1 parent 44cd5d4 commit bc31e9f

3 files changed

Lines changed: 22 additions & 1 deletion

File tree

public/js/extra.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,26 @@ function autoLinkify(view) {
322322
for (var level = 1; level <= 6; level++) {
323323
linkifyAnchors(level, contentBlock);
324324
}
325-
};
325+
}
326+
327+
function deduplicatedHeaderId(view) {
328+
var headers = view.find(':header').toArray();
329+
for (var i = 0; i < headers.length; i++) {
330+
var id = $(headers[i]).attr('id');
331+
if (!id) continue;
332+
var duplicatedHeaders = view.find(':header[id=' + id + ']').toArray();
333+
for (var j = 0; j < duplicatedHeaders.length; j++) {
334+
if (duplicatedHeaders[j] != headers[i]) {
335+
var newId = id + j;
336+
var $duplicatedHeader = $(duplicatedHeaders[j]);
337+
$duplicatedHeader.attr('id', newId);
338+
var $headerLink = $duplicatedHeader.find('> .header-link');
339+
$headerLink.attr('href', '#' + newId);
340+
$headerLink.attr('title', newId);
341+
}
342+
}
343+
}
344+
}
326345

327346
function scrollToHash() {
328347
var hash = location.hash;

public/js/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1725,6 +1725,7 @@ function updateView() {
17251725
lastResult = $(result).clone();
17261726
finishView(ui.area.view);
17271727
autoLinkify(ui.area.view);
1728+
deduplicatedHeaderId(ui.area.view);
17281729
generateToc('toc');
17291730
generateToc('toc-affix');
17301731
generateScrollspy();

public/js/pretty.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ markdown.html(result.html());
55
$(document.body).show();
66
finishView(markdown);
77
autoLinkify(markdown);
8+
deduplicatedHeaderId(markdown);
89
generateToc('toc');
910
generateToc('toc-affix');
1011
smoothHashScroll();

0 commit comments

Comments
 (0)