Closed SevenWate closed 6 months ago
Mermaid 语法目前已经非常成熟,虽然可以通过代码注入实现,但也许主题支持 or 新插件也许会更好。
如下实现方法有些笨拙,仅供参考。
<script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; window.addEventListener('load', function() { if (typeof mermaid === 'undefined') { console.error('Mermaid library is not loaded!'); } else { mermaid.initialize({startOnLoad:false,}); const elements = document.querySelectorAll('.language-mermaid'); if (elements.length) { elements.forEach(function(element) { // 创建一个新的div元素,用来插入渲染后的Mermaid图表 var insert = document.createElement('div'); insert.innerHTML = element.textContent; // 往上找两层,到达外层的<figure class="highlight"> var outerFigure = element.parentElement.parentElement; if(outerFigure && outerFigure.tagName.toLowerCase() === 'figure') { // 用新的div替换外层的<figure> outerFigure.parentNode.replaceChild(insert, outerFigure); try { // 初始化Mermaid图表 mermaid.init(undefined, insert); } catch (error) { console.error('Mermaid could not render the diagram', error); } } }); } } }); </script>
现在有插件实现,编辑器也有自带注入的(vditor) 挺好用
Mermaid 语法目前已经非常成熟,虽然可以通过代码注入实现,但也许主题支持 or 新插件也许会更好。
如下实现方法有些笨拙,仅供参考。