【问题标题】:How to highlight multiple language source codes using codemirror on the same page?如何在同一页面上使用 codemirror 突出显示多种语言源代码?
【发布时间】:2015-10-14 06:21:27
【问题描述】:

我正在编写一个教程页面,我需要在其中突出显示不同语言(HTML、CSS、Javascript、jQuery)的不同源代码

目前,如果我提到mode:"jQuery",它会突出显示一种语言

我想将部分代码突出显示为 HTML,部分突出显示为 CSS,部分突出显示为 jQuery 等。我该怎么做?

我当前的代码:

<link rel="stylesheet" href="codemirror-5.4/lib/codemirror.css">
<script src="codemirror-5.4/lib/codemirror.js"></script>
<script src="codemirror-5.4/mode/xml/xml.js"></script>
<script src="codemirror-5.4/mode/jquery/jquery.js"></script>
<script src="codemirror-5.4/keymap/sublime.js"></script>
<link rel="stylesheet" href="codemirror-5.4/theme/monokai.css">
<script src="codemirror-5.4/mode/htmlmixed.js"></script>

//代码镜像函数**

<script type="text/javascript">
    var areas = document.getElementsByClassName("myTextareaClass");
    for(var i = 0; i < areas.length; i++) {
        CodeMirror.fromTextArea(areas.item(i), {
            mode: "css",
            theme: "monokai",
            readOnly:true,
        });
    }
</script>

这是我想在同一页面上突出显示的内容

//在CSS模式下高亮代码

<textarea class="myTextareaClass">
    .fa-check {
        color:green;
    }
</textarea>

// 在 HTML 模式下高亮代码

<textarea class="myTextareaClass">
    <div>Sample Div Element</div>      
</textarea>

//在jQuery模式下高亮代码

<textarea class="myTextareaClass">
    $( "div" ).css( "border", "2px solid red" ).add( "p" ).css( "background", "green" );
</textarea>

我不能使用自动模式或自动选择,因为它不是由用户选择来检测的。我需要提到模式可能是手动的。 如何使用相同的功能实现这一点?

【问题讨论】:

    标签: javascript jquery html codemirror codemirror-modes


    【解决方案1】:

    我终于想出了一个可以完成这项工作的解决方案。但是,这不是目前最好的解决方案。以后可以改进。

    要突出显示不同语言的源代码,请使用三个不同的类创建不同的 codemirror 实例,并在其中保留三个不同的主题(html、css、javascript),如下所示。

    <script type="text/javascript">
        var areas = document.getElementsByClassName("myTextareaHtml");
        for(var i = 0; i < areas.length; i++) {   
          CodeMirror.fromTextArea(areas.item(i), {
            mode: "xml",
            theme: "monokai",
            readOnly:true,
    
        });
    
         }
        </script>
        <script type="text/javascript">
        var areas = document.getElementsByClassName("myTextareaCss");
        for(var i = 0; i < areas.length; i++) {   
          CodeMirror.fromTextArea(areas.item(i), {
            mode: "css",
            theme: "monokai",
            readOnly:true,
    
        });
    
         }
        </script>
        <script type="text/javascript">
        var areas = document.getElementsByClassName("myTextareaJavaScript");
        for(var i = 0; i < areas.length; i++) {   
          CodeMirror.fromTextArea(areas.item(i), {
            mode: "javascript",
            theme: "monokai",
            readOnly:true,
    
        });
    
         }
        </script>
    

    然后分别使用这些类来突出显示不同的语法,如下所示。

        // hight light the code in css mode
    
    <textarea class="myTextareaCss">
         .fa-check{
                color:green;
             }
        </textarea>
    
    // hight light the code in HTML mode
    
    <textarea class="myTextareaHtml">
      <div>Sample Div Element</div>
    
    </textarea>
    
    // hight light the code in jQuery mode
    
    <textarea class="myTextareaJavaScript">
      $( "div" ).css( "border", "2px solid red" ).add( "p" ).css( "background", "green" );
    </textarea>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多