我最近开始开发一个操作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的方式 那么如果我想保持我的班级结构,我应该怎么做呢? Link to live code(不适用于IE)。
答案 0 :(得分:3)
更直接的方法是在显示CodeMirror实例后调用.refresh()
。见http://codemirror.net/doc/manual.html#refresh
答案 1 :(得分:0)
所以我很简单地解决了这个问题 - 在向dom树添加编辑器后发送onresize
事件:
node.parentNode.replaceChild(holder,node);
var evt = document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false,window,0);
window.dispatchEvent(evt);