From ead48e45e0977e6376640b89f842f238ab382f94 Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Mon, 28 Nov 2016 22:15:07 +0800 Subject: [PATCH] Fix header id and text might affects by mathjax tags --- public/js/extra.js | 15 ++++++++++++--- public/vendor/md-toc.js | 3 ++- 2 files changed, 14 insertions(+), 4 deletions(-) mode change 100644 => 100755 public/vendor/md-toc.js diff --git a/public/js/extra.js b/public/js/extra.js index 3fe1084..8ca1dcb 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -689,7 +689,8 @@ function generateToc(id) { 'top': -1, 'class': 'toc', 'ulClass': 'nav', - 'targetId': id + 'targetId': id, + 'process': getHeaderContent }); if (target.text() == 'undefined') target.html(''); @@ -777,7 +778,7 @@ var linkifyAnchors = function (level, containingElement) { if (header.getElementsByClassName("anchor").length == 0) { if (typeof header.id == "undefined" || header.id == "") { //to escape characters not allow in css and humanize - var id = slugifyWithUTF8(header.innerHTML); + var id = slugifyWithUTF8(getHeaderContent(header)); header.id = id; } header.insertBefore(anchorForId(header.id), header.firstChild); @@ -795,6 +796,13 @@ function autoLinkify(view) { } } +function getHeaderContent(header) { + var headerHTML = $(header).clone(); + headerHTML.find('.MathJax_Preview').remove(); + headerHTML.find('.MathJax').remove(); + return headerHTML[0].innerHTML; +} + function deduplicatedHeaderId(view) { var headers = view.find(':header.raw').removeClass('raw').toArray(); for (var i = 0; i < headers.length; i++) { @@ -826,7 +834,8 @@ function renderTOC(view) { 'level': 3, 'top': -1, 'class': 'toc', - 'targetId': id + 'targetId': id, + 'process': getHeaderContent }); if (target.text() == 'undefined') target.html(''); diff --git a/public/vendor/md-toc.js b/public/vendor/md-toc.js old mode 100644 new mode 100755 index abdd9f5..200275a --- a/public/vendor/md-toc.js +++ b/public/vendor/md-toc.js @@ -13,6 +13,7 @@ this.ulClass = options['ulClass']; this.tocTop = parseInt(options.top) || 0; this.elChilds = this.el.children; + this.process = options['process']; if (!this.elChilds.length) return; this._init(); } @@ -53,7 +54,7 @@ var j = i + 1; this._elTitleElement = this.elTitleElements[i]; this._elTitleElementName = this._elTitleElement.tagName; - this._elTitleElementText = this._elTitleElement.innerHTML.replace(/<(?:.|\n)*?>/gm, ''); + this._elTitleElementText = (typeof this.process === 'function' ? this.process(this._elTitleElement) : this._elTitleElement.innerHTML).replace(/<(?:.|\n)*?>/gm, ''); var id = this._elTitleElement.getAttribute('id'); if (!id) { this._elTitleElement.setAttribute('id', 'tip' + i);