1

私は最近、CodeMirror を介して操作するクラスの開発を開始しました。必要なライブラリを動的にリンクし、サーバーとの通信を提供します。
そのため、すべてを変数に保持し、初期化時に CodeMirror がドキュメント ツリー内にない DOM ノードに追加されます。そのように:

 var holder = document.createElement("div");  
 var textarea = document.createElement("textarea");     
 holder.appendChild(textarea);
 this.editor = CodeMirror.fromTextArea(textarea, {/*options*/});

.show()次に、クラスでメソッドが呼び出されたときに、DIV を自分で追加します。

 this.show(node) {
   if(this.editor!=null) {
     node.parentNode.replaceChild(holder,node);
   }
 }

エディターは、クリックして描画しようとするか、ウィンドウのサイズを変更した後は問題ありません。しかし、以前は、スクロールバーが無効になっている空白の領域しか表示されませんでした。これは、CodeMirror 全体を初期化する方法が原因だと思います。
クラス構造を維持したい場合、それを機能させるにはどうすればよいですか? ライブ コードへのリンク(IE 用ではありません)。

4

2 に答える 2

0

だから私は問題を非常に簡単に解決しました - 私はonresizeDOMツリーにエディタを追加した後にイベントをディスパッチします:

node.parentNode.replaceChild(holder,node);
var evt = document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false,window,0);
window.dispatchEvent(evt);

サイズ変更イベントをディスパッチする方法に基づいていますか? 質問。

于 2013-02-11T21:35:32.090 に答える