11

我在正在构建的 web 应用程序中嵌入了一个 CodeMirror 实例。它工作得很好——除了初始内容在用户输入一个新字符之前不会显示。因此,在用户强制更改之前,所有内容都隐藏起来。这是不好的。有什么方法可以强制重新绘制或刷新模拟字符输入的浏览器 - 空格可以。

这是代码...

<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

4

3 回答 3

10

如果发生这种情况,您确实需要refresh()在您的 CodeMirror 实例上调用 a 。但是由于空间猴子,您需要在超时中包装刷新调用:

var editor = CodeMirror.fromTextArea( yourSourceDOM, { lineNumbers:true })
setTimeout( editor.refresh, 0 )

它不漂亮,但这为我解决了它。

于 2012-10-02T22:02:52.097 回答
4

使用代码镜像 5.14.2,如果您显式刷新,则必须注意正确调用它(请参阅此问题),但使用 codemirror 提供的 autorefresh add on最容易处理。

于 2016-05-16T23:51:16.290 回答
2

如果您使用的是 CodeMirror 版本 2+,则可以调用CodeMirror.refresh(). 请参阅 上的文档refresh()

注意:这必须在 CodeMirror实例而不是元素上调用。见https://stackoverflow.com/a/5377029/526741

于 2012-09-11T20:52:10.183 回答