我最近开始开发一个在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)。
发布于 2013-02-12 17:48:22
一种更直接的方法是在显示CodeMirror实例之后调用该实例上的.refresh()。请参阅http://codemirror.net/doc/manual.html#refresh
发布于 2013-02-12 05:35:32
所以我很简单地解决了这个问题-在向dom树添加编辑器后,我调度了onresize事件:
node.parentNode.replaceChild(holder,node);
var evt = document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false,window,0);
window.dispatchEvent(evt);https://stackoverflow.com/questions/14820886
复制相似问题