如何将prism.js 连接到textarea

use*_*618 4 syntax-highlighting

这段代码工作正常:

<head>
    <script src='.../prism/prism.js'></script>
    <link href='../prism/prism.css' rel='stylesheet' type='text/css'>
</head>

<pre>
    <c?de class="language-html">
        <span>one</span>
    </c?de>
</pre>
Run Code Online (Sandbox Code Playgroud)

但是,如果您连接到 textarea,则没有任何效果。

<textarea name="text" class="language-html">
    <span>one</span>
</textarea>
Run Code Online (Sandbox Code Playgroud)

为什么?应该纠正什么才能奏效?

小智 8

PrismJs 指定它只使用<pre><code>标签,所以 a<textarea>不起作用。

因此,它只适用于<code>元素,因为标记没有<code>元素的代码在语义上是无效的。 https://prismjs.com/index.html

但是,有一个名为 PrismJs live 的副项目,您可以将其附加到 textareas https://live.prismjs.com/ - 它由Lea Verou 制作,目前正在进行中。

网站上提供了完整和最新的说明,但基本上您需要prismjs-live.js在.css之后prism.jsprism-live.css标准之后prism包含。

使用 Javascript 库调用,您还需要包含要加载的语言,例如, prismjs-live.js?load=php,javascript

<head>
    <meta charset="UTF-8">
    <title>Prism Live: Lightweight, extensible, powerful web-based code editor</title>
    <link rel="stylesheet" href="./prism.css">
    <link rel="stylesheet" href="./prism-live.css">

    <textarea aria-label="Enter your response here" rows="5" class="prism-live"></textarea>

   <script src="./prism.js" charset="utf-8"></script>
   <script src="./prism-live.js?load=python,javascript" charset="utf-8"></script>
</head>
Run Code Online (Sandbox Code Playgroud)