CodeMirror具有内容,但在按下之前不会显示

Jac*_*ney 10 javascript php jquery codemirror

我有一个嵌入在我正在构建的webapp中的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>
Run Code Online (Sandbox Code Playgroud)

这将生成一个工作编辑器,用于保存内容并在文本区域内显示已保存的内容,但仅在用户开始编辑后显示.在此之前它只是空白.

任何帮助,甚至只是链接将受到高度赞赏.多谢你们!

UPDATE

在myCodeMirror上调用.refresh会在Chrome控制台中打印错误 Uncaught TypeError: Cannot call method 'focus' of undefined

pap*_*boy 9

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

var editor = CodeMirror.fromTextArea( yourSourceDOM, { lineNumbers:true })
setTimeout( editor.refresh, 0 )
Run Code Online (Sandbox Code Playgroud)

它不漂亮,但这解决了我.


0b1*_*011 2

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

注意:这必须在 CodeMirror实例而不是元素上调用。请参阅/sf/answers/376392061/