我有一个 CodeMirror 实例嵌入到我正在构建的 Web 应用程序中。它工作得很好 - 除了在用户输入新字符之前不会显示初始内容。因此,在用户强制更改之前,它都在那里隐藏。这很糟糕。有什么方法可以强制重新绘制或刷新模拟字符输入的浏览器 - 空格就可以了。
这是代码...
<textarea id='code-mirror' ><?php echo $contents; ?></textarea>
<script>
jQuery(document).ready(function(){
var textarea = document.getElementById('code-mirror');
var myCodeMirror = CodeMirror.fromTextArea(textarea,
{
onUpdate:codemirrorcallback,
});
// myCodeMirror.refresh(); ? is this an option?
});
</script>
这将生成一个工作编辑器,该编辑器保存内容并在文本区域内显示保存的内容,但仅在用户开始编辑后显示它。在此之前,它只是空白的。
任何帮助,甚至只是链接,将不胜感激。谢谢大家!
更新
在 myCodeMirror 上调用 .refresh 会在 Chrome 控制台中打印错误Uncaught TypeError: Cannot call method 'focus' of undefined
如果发生这种情况,您确实需要在 CodeMirror 实例上调用 refresh()
。但是由于太空猴子,您需要在超时中包装刷新调用:
var editor = CodeMirror.fromTextArea( yourSourceDOM, { lineNumbers:true })
setTimeout( editor.refresh, 0 )
它并不漂亮,但这为我解决了它。
使用代码镜像 5.14.2,如果您显式刷新,则必须注意正确调用它(请参阅此问题),但使用代码镜像提供的自动刷新插件最容易处理它。
如果您使用的是 CodeMirror 版本 2+,则可以调用 CodeMirror.refresh()
。请参阅有关 refresh()
的文档。
注意: 这必须在 CodeMirror 实例上调用,而不是在元素上调用。见 https://stackoverflow.com/a/5377029/526741