Подтвердить что ты не робот

CodeMirror имеет контент, но не будет отображаться до нажатия клавиши

У меня есть экземпляр CodeMirror, встроенный в webapp, который я создаю. Он отлично работает - за исключением того, что исходный контент не будет отображаться, пока пользователь не вводит новый символ. Таким образом, все это скрыто, пока пользователь не внесет изменения. Это плохо. Есть ли способ заставить перерисовать или обновить браузер, чтобы имитировать символ ввода - пробелы будут делать.

Вот код...

<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>

Это создает рабочий редактор, который сохраняет содержимое и отображает сохраненное содержимое внутри текстовой области, но ТОЛЬКО отображает его после того, как пользователь начинает его редактировать. До этого он просто пуст.

Любая помощь, даже ссылки будут высоко оценены. Спасибо, ребята!

ОБНОВЛЕНИЕ

Вызов .refresh на myCodeMirror печатает ошибку в консоли Chrome Uncaught TypeError: Cannot call method 'focus' of undefined

4b9b3361

Ответ 1

Вам действительно нужно вызвать refresh() в вашем экземпляре CodeMirror, если это произойдет. Но из-за космических обезьян вам понадобится обернуть вызов обновления в тайм-аут:

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

Это не очень, но это решило это для меня.

Ответ 2

Используя зеркало кода 5.14.2, если вы явно обновляете его, вы должны позаботиться о его правильном использовании (см. этот вопрос), но с ним лучше всего справиться с codemirror autorefresh добавить.

Ответ 3

Если вы используете CodeMirror версии 2+, вы можете позвонить CodeMirror.refresh(). См. Документацию на refresh().

Примечание. Это нужно вызвать в экземпляре CodeMirror , а не в элементе. См. fooobar.com/info/98977/...