mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 13:59:52 +08:00
bugfix: clean up after Mermaid render failure
This commit is contained in:
parent
97dd8c43cc
commit
6949de8723
@ -3,20 +3,22 @@ var placeholder = document.getElementById('placeholder');
|
||||
var updateHtml = function(html) {
|
||||
placeholder.innerHTML = html;
|
||||
var codes = document.getElementsByTagName('code');
|
||||
var mermaidIdx = 0;
|
||||
mermaidIdx = 0;
|
||||
for (var i = 0; i < codes.length; ++i) {
|
||||
var code = codes[i];
|
||||
if (code.parentElement.tagName.toLowerCase() == 'pre') {
|
||||
if (VEnableMermaid && code.classList.contains('language-mermaid')) {
|
||||
// Mermaid code block.
|
||||
mermaidParserErr = false;
|
||||
mermaidIdx++;
|
||||
try {
|
||||
var graph = mermaidAPI.render('mermaid-diagram-' + mermaidIdx++, code.innerText, function(){});
|
||||
// Do not increment mermaidIdx here.
|
||||
var graph = mermaidAPI.render('mermaid-diagram-' + mermaidIdx, code.innerText, function(){});
|
||||
} catch (err) {
|
||||
content.setLog("err: " + err);
|
||||
continue;
|
||||
}
|
||||
if (mermaidParserErr) {
|
||||
if (mermaidParserErr || typeof graph == "undefined") {
|
||||
continue;
|
||||
}
|
||||
var graphDiv = document.createElement('div');
|
||||
|
@ -137,10 +137,18 @@ document.onkeydown = function(e) {
|
||||
};
|
||||
|
||||
var mermaidParserErr = false;
|
||||
var mermaidIdx = 0;
|
||||
|
||||
mermaidAPI.parseError = function(err, hash) {
|
||||
content.setLog("err: " + err);
|
||||
mermaidParserErr = true;
|
||||
|
||||
// Clean the container element, or mermaidAPI won't render the graph with
|
||||
// the same id.
|
||||
var errGraph = document.getElementById('mermaid-diagram-' + mermaidIdx);
|
||||
var parentNode = errGraph.parentElement;
|
||||
parentNode.outerHTML = '';
|
||||
delete parentNode;
|
||||
};
|
||||
|
||||
// @className, the class name of the mermaid code block, such as 'lang-mermaid'.
|
||||
@ -149,19 +157,21 @@ var renderMermaid = function(className) {
|
||||
return;
|
||||
}
|
||||
var codes = document.getElementsByTagName('code');
|
||||
var mermaidIdx = 0;
|
||||
mermaidIdx = 0;
|
||||
for (var i = 0; i < codes.length; ++i) {
|
||||
var code = codes[i];
|
||||
if (code.classList.contains(className)) {
|
||||
// Mermaid code block.
|
||||
mermaidParserErr = false;
|
||||
mermaidIdx++;
|
||||
try {
|
||||
var graph = mermaidAPI.render('mermaid-diagram-' + mermaidIdx++, code.innerText, function(){});
|
||||
// Do not increment mermaidIdx here.
|
||||
var graph = mermaidAPI.render('mermaid-diagram-' + mermaidIdx, code.innerText, function(){});
|
||||
} catch (err) {
|
||||
content.setLog("err: " + err);
|
||||
continue;
|
||||
}
|
||||
if (mermaidParserErr) {
|
||||
if (mermaidParserErr || typeof graph == "undefined") {
|
||||
continue;
|
||||
}
|
||||
var graphDiv = document.createElement('div');
|
||||
|
Loading…
x
Reference in New Issue
Block a user