CodeMirror имеет содержимое, но не будет отображаться до нажатия клавиши
У меня есть экземпляр 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>
Это создает работающий редактор, который сохраняет контент и отображает сохраненный контент внутри текстовой области, но отображает его ТОЛЬКО после того, как пользователь начинает его редактировать. До этого просто пусто.
Любая помощь, даже просто ссылки будут высоко оценены. Спасибо, парни!
ОБНОВИТЬ
Вызов.refresh для myCodeMirror приводит к печати ошибки в консоли Chrome Uncaught TypeError: Cannot call method 'focus' of undefined
3 ответа
Вам действительно нужно позвонить refresh()
в вашем экземпляре CodeMirror, если это происходит. Но из-за космических обезьян вам понадобится перевести вызов на обновление в тайм-аут:
var editor = CodeMirror.fromTextArea( yourSourceDOM, { lineNumbers:true })
setTimeout( editor.refresh, 0 )
Это не красиво, но это решило это для меня.
Используя зеркальное отображение кода 5.14.2, если вы обновляете явно, вы должны позаботиться о том, чтобы вызвать его должным образом (см. Этот вопрос), но это легче всего сделать с помощью дополнения autorefresh, предоставленного codemirror.
Если вы используете CodeMirror версии 2+, вы можете позвонить CodeMirror.refresh()
, Смотрите документацию наrefresh()
,
Примечание. Это необходимо вызывать дляэкземпляра CodeMirror, а не для элемента. См. /questions/8859423/javascript-codemirror-obnovit-tekstovuyu-oblast/8859437#8859437