【问题标题】:How to kill a CodeMirror instance?如何杀死 CodeMirror 实例?
【发布时间】:2013-09-16 12:57:06
【问题描述】:

我正在使用 Codemirror v3.16,我正在尝试找出如何杀死我的 codemirror 实例?基本上,当我页面上的文本区域以模式打开时,codemirror 会触发。关闭这个模态,我需要杀死实例,否则当我重新打开模态时,我得到两个文本区域。

有人可以帮忙吗?

【问题讨论】:

    标签: javascript codemirror


    【解决方案1】:

    如果 CodeMirror 实例是使用CodeMirror.fromTextArea 创建的,您可以使用其toTextArea 方法将当前内容复制到其“镜像”文本区域并删除该实例。

    假设您的 CM 实例的 id 为“CMEditor”:

    CM = document.getElementById('CMEditor');
    CM.CodeMirror.toTextArea();
    

    或者,您可以在模式之外实例化 CM 实例,并在模式打开时隐藏和显示它。

    【讨论】:

    • 嗨,我收到了.toTextArea() is not a function,你能帮我解决这个问题吗?
    【解决方案2】:

    当 CodeMirror 从 DOM 中删除时(并且您杀死了 JavaScript 可能持有的所有现有对它的引用),它将被垃圾收集。没有明确的“kill”方法,您只需停止引用它即可。

    【讨论】:

    • Chrome 的内存分析器不同意您的看法。闭包产生的 DOM 节点引用不会因为这些节点从 DOM 中删除而神奇地消失。如果 CodeMirror 将其实例存储在全局 CodeMirror 对象中,则存在内存泄漏。
    • 没有,所以我真的不知道你在说什么。
    • 我的案例是一个单页应用程序,您在其中不断创建和销毁 CodeMirror 文本区域。你说这行得通吗? jsfiddle.net/7zvnyagq
    • Marijn,我猜 Doidgey 的问题(“OP”)实际上是关于“如何从 DOM 中删除 CodeMirror”。
    【解决方案3】:

    上述答案仅适用于文本区域之上的 CM,但并非总是如此。这样更好:

    cm.setOption("mode", "text/x-csrc");
    cm.getWrapperElement().parentNode.removeChild(cm.getWrapperElement());
    cm=null;
    

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
    • 嗯? OP 询问“我如何杀死我的代码镜像的实例”,我已经展示了这样做的代码
    • 真的需要cm.setOption("mode", "text/x-csrc");吗?
    • 嗨,我正在尝试这个,这似乎甚至为我删除了 textarea。我也无法看到文本区域。我在这里做错了吗?请给点建议。
    【解决方案4】:

    版本 5.3 或 05/2015 更新

    CM = document.getElementById('CMEditor');
    
    CM.CodeMirror.toTextArea(); // is not working 
    
    CM.toTextArea(); // is making the magic happen
    

    【讨论】:

    • 嗨,我试过这个,它把我扔到了最新版本的.toTextArea is not a function。你能帮我解决这个问题吗?
    【解决方案5】:

    我已经添加了上面的代码在模态关闭时运行,但它说 --- cmeditor.toTextArea 不是一个函数

    $("body").on("hidden.bs.modal", ".modal", function()
    {
        $(this).removeData("bs.modal");
    
        cmeditor = document.getElementById("email_template_text");
        cmeditor.toTextArea();
    });
    

    【讨论】:

      猜你喜欢
      • 2014-10-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多