能否使用CodeMirror 2来突出显示来自 DIV
或 PRE
标签的代码(不使用编辑器)?
就像 CodeMirror 1 过去可以使用 highlightText() 函数一样? 例如这里:http://codemirror.net/1/highlight.html,在按下 "run highlight" 后突出显示(下面的突出显示文本)
此外,它能否从内联元素,如 <code>
,突出显示代码,并保持结果内联,就像谷歌的 Prettify 所做的那样?
能否使用CodeMirror 2来突出显示来自 DIV
或 PRE
标签的代码(不使用编辑器)?
就像 CodeMirror 1 过去可以使用 highlightText() 函数一样? 例如这里:http://codemirror.net/1/highlight.html,在按下 "run highlight" 后突出显示(下面的突出显示文本)
此外,它能否从内联元素,如 <code>
,突出显示代码,并保持结果内联,就像谷歌的 Prettify 所做的那样?
一个更好、更简单的解决方案是将CodeMirror实例的readOnly属性设置为true,就像这样:
$('.code').each(function() {
var $this = $(this),
$code = $this.html();
$this.empty();
var myCodeMirror = CodeMirror(this, {
value: $code,
mode: 'javascript',
lineNumbers: !$this.is('.inline'),
readOnly: true
});
});
只需将包含代码的标签添加类.code
,它就会被语法高亮显示。我还添加了对行内代码的支持,通过使用类.inline
。
<div> fuu </div>
。 - AlexreadOnly
选项:var myCodeMirror = CodeMirror(function(elt) {
myElement.parentNode.replaceChild(myElement, elt); // myElement is your <pre> or <div>
}, {
value: myElement.value,
readOnly: true
});
function refreshDisplay(from, to) method
这里有一个更简单的解决方案,使用 codemirror runmode 和 jquery:
<pre class='code'>{:message => 'sample code'}</pre>
$(document).ready(function() {
$('.code').each(function(index, e) {
$(e).addClass('cm-s-default'); // apply a theme class
CodeMirror.runMode($(e).text(), "javascript", $(e)[0]);
});
});