我想知道是否可以预先格式化文本区域内的文本。现在我有一个 textarea 代码,我想添加语法突出显示并添加行号,所以我试图将文本包装在 pre 标记内。这是正确的还是我应该做一些完全不同的事情?
<textarea id="conversation" class="codebox" style="font-family:courier;">
<pre class="brush: js;">// Start typing...</pre>
</textarea>
我想知道是否可以预先格式化文本区域内的文本。现在我有一个 textarea 代码,我想添加语法突出显示并添加行号,所以我试图将文本包装在 pre 标记内。这是正确的还是我应该做一些完全不同的事情?
<textarea id="conversation" class="codebox" style="font-family:courier;">
<pre class="brush: js;">// Start typing...</pre>
</textarea>
textarea
s 无法像您想要的那样呈现内容,它们只显示文本。我建议使用浏览器内代码编辑器。一个很好的是CodeMirror,它相当容易使用:
HTML
<textarea id="code" name="code">
// Demo code (the actual new parser character stream implementation)
function StringStream(string) {
this.pos = 0;
this.string = string;
}
...
</textarea>
Javascript
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
lineNumbers: true,
matchBrackets: true
});
CodeMirror 在新编辑器中插入一个包含该内容的可编辑块。
还有其他选择。维基百科有一个基于 Javascript 的源代码编辑器条目的比较。
让 Pre 标记包含文本区域在 Chrome 中有效
元素内容在实现中textarea
被视为预先格式化,但默认情况下,如果一行比cols
属性指定的长,浏览器会自动换行。可以使用非标准但广泛支持的属性禁用包装wrap=off
。
但是,textarea 元素不足以仅仅显示内容。它也不适合设置具有格式化功能的输入编辑器,因为里面的所有标记textarea
都是按字面意思理解的。