Ich habe eine CodeMirror-Instanz in einer Webapp eingebettet, die ich erstelle. Es funktioniert großartig - außer dass der ursprüngliche Inhalt nicht angezeigt wird, bis der Benutzer ein neues Zeichen eingibt. Es ist also alles da, bis der Benutzer eine Veränderung erzwingt. Das ist schlecht. Gibt es eine Möglichkeit, ein Repaint oder Refresh des Browsers zu erzwingen, um ein Zeichen einzugeben - Whitespace genügt. HierCodeMirror hat Inhalt, wird aber nicht angezeigt bis zum Tastendruck
ist der Code ...
<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>
Dieser eine Arbeits Editor produzieren, die den Inhalt speichert und zeigt die gespeicherten Inhalte in den Textbereich aber nur zeigt es, nachdem der Benutzer es Bearbeitung beginnt. Vorher ist es nur leer.
Jede Hilfe, auch nur Links würde sehr geschätzt werden. Danke Leute!
UPDATE
auf myCodeMirror Aufruf .refresh druckt einen Fehler in der Chrome-Konsole von Uncaught TypeError: Cannot call method 'focus' of undefined
Ich hatte das gleiche Problem und das schien es zu beheben. Hast du eine Idee, warum das funktioniert? – Sarumanatee
Die Space-Affen erlaubt mir nicht, die setTimeout zu verwenden. Das Entfernen hat für mich funktioniert. – Tk421
Jedes Mal, wenn Sie ein 'setTimeout' oder ähnliches verwenden müssen, ist es _usual_ (in diesem Fall nicht sicher), da jemand Zalgo veröffentlicht (Mixing Sync vs Async APIs). Mehr dazu hier: http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony – papercowboy