12

我想,在下面的图表中,

<link href="https://cdnjs.cloudflare.com/ajax/libs/mermaid/7.0.0/mermaid.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/7.0.0/mermaid.js"></script>
<div class="mermaid">
  graph TD; 
  A[hello] 
  B[an <b>important</b> link] 
  A-->B
</div>

link在指向下添加一个实际链接http://google.com

我试图将相关节点修改为

B[an <b>important</b> <a href="http://google.com">link</a>] 

但这会破坏(崩溃)图表。具体来说,我注意到不被接受的是href元素。

是否可以在美人鱼节点描述中添加链接?

编辑:我在 mermaid.js 存储库上打开了一个错误报告。截至 2017 年 6 月尚未修复。

4

3 回答 3

11

我知道已经晚了,但是:我正在寻找类似的东西并找到了这个。您的问题是打破美人鱼语法"的定义。href

我可以通过使用来实现您想要做的事情

B[an <b>important</b> <a href='http://google.com'>link</a>]

所以用单引号替换定义"的双引号href'

请参阅此处的示例


一年后更新

在较新版本的美人鱼中,不再直接支持此功能(ಠ_ಠ)

更多关于它的关于版本 8.2 的特别说明

现在您还需要通过以下方式允许不安全的内容

mermaidAPI.initialize({
    securityLevel: 'loose'
});
于 2018-08-14T09:30:47.673 回答
8

当然,可以在 Mermaid 节点中添加链接,如下图所示:

mermaid.initialize({
  startOnLoad: true
});
<script src="https://cdn.rawgit.com/knsv/mermaid/6.0.0/dist/mermaid.min.js"></script>
<link href="https://cdn.rawgit.com/knsv/mermaid/6.0.0/dist/mermaid.css" rel="stylesheet" />

<div class='mermaid'>
  graph TD; 
  A(Start)-->B(Do some stuff); 
  B(Take some rest)-->C(do more);
  click B "http://www.github.com" "This is a link"
  
</div>

您也可以使用此脚本进行回调

<script>
    var callback = function(){
        alert('A callback was triggered');
    }
<script>

然后将其插入到 HTML 中节点 A-->B 下方的 HTML 中

click A callback "Hi I'm a callback, whats up"
于 2017-04-26T13:23:09.063 回答
0

一些图表具有交互支持:

使用时禁用此功能securityLevel='strict'

并在使用时启用securityLevel='loose'

例子

<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.14.0/mermaid.min.js"></script>
<h2>FlowChart</h2>
<div class="mermaid">
  graph LR
  A -- text --> B --> Stackoverflow -- msg --> myLabel2
  click Stackoverflow "https://stackoverflow.com/" "some desc when mouse hover" _blank
  click myLabel2 "https://stackoverflow.com/" "some desc when mouse hover"
</div>

<h2>classDiagram</h2>
<div class="mermaid">
  %% https://github.com/mermaid-js/mermaid/blob/cbe3a9159db4d5e67d270fe701cd63de1510f6ee/docs/directives.md?plain=1#L10-L48
  %%{init: {'theme': 'forest'}}%%
  classDiagram
    class myCls {
      attr type
      method()
    }
    %% ↓ must set: securityLevel=loose %% default para: clsID
    click myCls call myFunc() "desc."

    class myCls2
    click myCls2 call myFunc('hello world') "desc."

    class myClsUseLink {
      +field1
    }

    link myClsUseLink "https://www.github.com" "This is a link"
</div>

<h2>Gantt</h2>
<div class="mermaid">
  gantt
  dateFormat HH:mm
  axisFormat %H:%M
  try to click me : gotoSO, 19:00, 5min
  %% click : debug, after gotoSO,  5min  --> error, click is "keyword"
  clickMe : debug, after gotoSO,  5min
  endNode : milestone, m, 20:00, 0min
  click gotoSO href "https://stackoverflow.com/"
  click debug call myFunc()
  %% NOTE: not working on github
</div>

<script>
  mermaid.initialize({
    securityLevel: 'loose', // strict, loose, antiscript, sandbox // // https://github.com/mermaid-js/mermaid/blob/b141f24068e9c5f6979706383a29db6380ffdf31/docs/usage.md?plain=1#L114-L117
  });

  function myFunc(arg) {
    console.log(arg)
  }
</script>

于 2022-02-18T03:03:43.990 回答