Подтвердить что ты не робот

Не работает HTML-режим CodeMirror

Я пытаюсь создать образцы кода с помощью CodeMirror, но он работает частично - он применяет выбранную тему к textarea, но синтаксис не выделяется.

Есть моя страница:

<textarea id="template-html" name="code" class="CodeMirror">
    <!DOCTYPE html>
    <foobar>
        <blah>Enter your xml here and press the button below to display it as highlighted by the CodeMirror XML mode</blah>
        <tag2 foo="2" bar="bar" />
    </foobar>
</textarea>
<link rel="stylesheet" type="text/css" href="/site.com/css/codemirror/codemirror.css">
<link rel="stylesheet" type="text/css" href="/site.com/css/codemirror/theme/ambiance.css">
<link rel="stylesheet" type="text/css" href="/site.com/css/codemirror/theme/solarized.css">
<script type="text/javascript" src="/site.com/js/libs/codemirror/codemirror.js"></script>
<script type="text/javascript" src="/site.com/js/libs/codemirror/mode/javascript/javascript.js"></script>
<script type="text/javascript">
    var config, editor;

    config = {
        lineNumbers: true,
        mode: "text/html",
        theme: "ambiance",
        indentWithTabs: false,
        readOnly: true
    };

    editor = CodeMirror.fromTextArea(document.getElementById("template-html"), config);

    function selectTheme() {
        editor.setOption("theme", "solarized dark");
    }
    setTimeout(selectTheme, 5000);
</script>

Вот изображение результата. Кажется, что это работает, но без подсветки синтаксиса (изображение сверху), я также пробовал без моего CSS, но результат тот же (снизу снизу):

codemirror html mode

Проблема заключается в mode: "text/html", который, кажется, не работает должным образом, если я использую mode: "javascript", он раскрашивает теги по синтаксическим правилам JavaScript. Как я могу это исправить?

4b9b3361

Ответ 1

CodeMirror анализирует HTML, используя режим XML. Чтобы использовать его, необходимо включить соответствующий script, как и в любом другом режиме.

Добавьте свою зависимость в свою разметку:

<script type="text/javascript" 
        src="/site.com/js/libs/codemirror/mode/xml/xml.js"></script>

и установите для режима xml:

config = {
    mode : "xml",
    // ...
};

Кроме того, вы можете настроить анализатор, чтобы он не форматировал XML. Вы можете сделать это, переключив флаг htmlMode на:

config = {
    mode : "xml",
    htmlMode: true,
    // ...
};

Смотрите демонстрационный пример XML/HTML для живого примера.