首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建CodeMirror动态渲染问题

创建CodeMirror动态渲染问题
EN

Stack Overflow用户
提问于 2013-02-12 05:08:27
回答 2查看 2.1K关注 0票数 1

我最近开始开发一个在CodeMirror上操作的类-动态链接必要的库,提供与服务器的通信等。

因为我将所有内容都保存在变量中,所以在初始化时,CodeMirror被附加到不在文档树中的DOM节点。就像这样:

代码语言:javascript
复制
 var holder = document.createElement("div");  
 var textarea = document.createElement("textarea");     
 holder.appendChild(textarea);
 this.editor = CodeMirror.fromTextArea(textarea, {/*options*/});

然后,当在我的类上调用.show()方法时,我自己附加DIV:

代码语言:javascript
复制
 this.show(node) {
   if(this.editor!=null) {
     node.parentNode.replaceChild(holder,node);
   }
 }

编辑器是正常的,因为点击它并尝试绘制,或在我调整窗口大小之后。但在此之前,我只看到带有禁用滚动条的空白区域。我相信这是因为我初始化整个CodeMirror的方式。

那么,如果我想保持我的类结构,我应该怎么做才能让它工作呢?Link to live code (不适用于IE)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-12 17:48:22

一种更直接的方法是在显示CodeMirror实例之后调用该实例上的.refresh()。请参阅http://codemirror.net/doc/manual.html#refresh

票数 3
EN

Stack Overflow用户

发布于 2013-02-12 05:35:32

所以我很简单地解决了这个问题-在向dom树添加编辑器后,我调度了onresize事件:

代码语言:javascript
复制
node.parentNode.replaceChild(holder,node);
var evt = document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false,window,0);
window.dispatchEvent(evt);

基于How to dispatch resize event?问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14820886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档