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インスタンスでを呼び出す必要があります。ただし、スペースモンキーのため、refresh呼び出しをタイムアウトでラップする必要があります。

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

きれいではありませんが、それで解決しました。

于 2012-10-02T22:02:52.097 に答える
4

コード ミラー5.14.2を使用して、明示的に更新する場合は、適切に呼び出すように注意する必要があります (この質問を参照) 。

于 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 に答える