diff --git a/src/resources/pre_template.html b/src/resources/pre_template.html index 989446e1..05ca6abe 100644 --- a/src/resources/pre_template.html +++ b/src/resources/pre_template.html @@ -7,7 +7,38 @@ +
+ diff --git a/src/resources/template.html b/src/resources/template.html index 505b513c..4e386364 100644 --- a/src/resources/template.html +++ b/src/resources/template.html @@ -148,13 +148,22 @@ handleToc(needToc); }; - var scrollToAnchor = function(anchor) { - var eles = document.getElementsByTagName('a'); - for (var i = 0; i < eles.length; ++i) { - if (eles[i].name == anchor) { - eles[i].scrollIntoView(); - break; - } + // Type = 0, Hoedown, getElementById; + // Type = 1, Marked, getElementsByTagName; + var scrollToAnchor = function(anchor, type) { + switch (type) { + case 0: + document.getElementById(anchor).scrollIntoView(); + break; + case 1: + var eles = document.getElementsByTagName('a'); + for (var i = 0; i < eles.length; ++i) { + if (eles[i].name == anchor) { + eles[i].scrollIntoView(); + break; + } + } + break; } }; diff --git a/src/vdocument.cpp b/src/vdocument.cpp index 9e3c0f8f..dd78343d 100644 --- a/src/vdocument.cpp +++ b/src/vdocument.cpp @@ -39,7 +39,7 @@ QString VDocument::getToc() return m_toc; } -void VDocument::scrollToAnchor(const QString &anchor) +void VDocument::scrollToAnchor(const QString &anchor, int type) { - emit requestScrollToAnchor(anchor); + emit requestScrollToAnchor(anchor, type); } diff --git a/src/vdocument.h b/src/vdocument.h index 88982a23..1312beee 100644 --- a/src/vdocument.h +++ b/src/vdocument.h @@ -16,7 +16,7 @@ public: void setText(const QString &text); QString getText(); QString getToc(); - void scrollToAnchor(const QString &anchor); + void scrollToAnchor(const QString &anchor, int type); public slots: // Will be called in the HTML side @@ -25,7 +25,7 @@ public slots: signals: void textChanged(const QString &text); void tocChanged(const QString &toc); - void requestScrollToAnchor(const QString &anchor); + void requestScrollToAnchor(const QString &anchor, int type); private: QString m_text; diff --git a/src/vedittab.cpp b/src/vedittab.cpp index 4d70e57f..6b79602e 100644 --- a/src/vedittab.cpp +++ b/src/vedittab.cpp @@ -217,12 +217,13 @@ void VEditTab::setupMarkdownPreview() VPreviewPage *page = new VPreviewPage(this); webPreviewer->setPage(page); + QWebChannel *channel = new QWebChannel(this); + channel->registerObject(QStringLiteral("content"), &document); + connect(&document, &VDocument::tocChanged, + this, &VEditTab::updateTocFromHtml); + page->setWebChannel(channel); + if (mdConverterType == MarkdownConverterType::Marked) { - QWebChannel *channel = new QWebChannel(this); - channel->registerObject(QStringLiteral("content"), &document); - connect(&document, &VDocument::tocChanged, - this, &VEditTab::updateTocFromHtml); - page->setWebChannel(channel); webPreviewer->setHtml(VNote::templateHtml, QUrl::fromLocalFile(noteFile->basePath + QDir::separator())); } @@ -344,7 +345,7 @@ void VEditTab::scrollToAnchor(const VAnchor &anchor) } } else { if (!anchor.anchor.isEmpty()) { - document.scrollToAnchor(anchor.anchor.mid(1)); + document.scrollToAnchor(anchor.anchor.mid(1), mdConverterType); } } }