如何完全破坏tinymce?

pow*_*boy 7 javascript tinymce

我正在做这样的事情:

在网页上,有一篇文章包含在DIV中,一个编辑按钮.当用户单击"编辑"按钮时,通过javascript插入textarea,将DIV的html加载到textarea中,加载并初始化tinymce.当用户单击"保存"按钮时,通过ajax保存并更新文章,并完全销毁tinymce.

问题是,我没能破坏tinymce.这是destroy方法的文档.

我正在使用最新的V3.2.2的jiQuery版本的tinymce

以下是示例代码:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <script type="text/javascript" src="../js/tinymce/jquery.tinymce.js"></script>
        <script type="text/javascript">
            $(function() {
                $('button.load').click(loadTinyMCE);
                $('button.destory').click(destoryTinyMCE);
            });

            function loadTinyMCE() {
                $('textarea').tinymce({
                    script_url : '../js/tinymce/tiny_mce.js'
                });
            }

            function destoryTinyMCE() {
                $('textarea').tinymce().destroy();
            }
        </script>
    </head>
    <body>
        <textarea>abc</textarea>
        <button type="button" class="load">Load TinyMCE</button>
        <button type="button" class="destory">Destory TinyMCE</button>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Eth*_*han 9

请改用remove().


Joh*_*n K 6

你已经有了一个实用的解决方案,带有remove()所以这里是关于destroy()的答案.

在许多编程语言中,销毁方法(有时称为dispose)很常见,以便清理某个实例所使用的资源.Destroy通常是纯粹的记忆概念(即非视觉).destroy方法通常与面向对象的析构函数方法的不同之处在于,为了在最终析构函数运行之前或垃圾收集器出现之前清除内存和资源,可以允许程序员显式调用destroy. (在任何一种情况下都是如此,所以你可以在不再需要它时释放东西,而不是让这些资源在程序结束之前使用).有时析构函数方法自然会包含对destroy方法的调用,以确保最终清理所有资源,因此通常程序员不必担心不调用它,因为它最终会被自动调用.

破坏方法代码体通常由程序员提供,用于特定于应用程序的行为(在某些语言中从基类/对象中重写).这意味着在没有为它提供实现的情况下调用destroy通常什么都不做 - 一个空的代码体.当然对于TinyMCE,它将适当地实现自己的销毁方法.

TinyMCE文档不会在销毁时承诺任何视觉上的变化,只是实例将被剥夺内存泄漏的可能性.这与通常的破坏方法一致.

通过删除可能泄漏内存的所有事件,元素引用或其他资源来销毁编辑器实例.在卸载页面时将自动调用此方法,但如果您知道自己在做什么,也可以直接调用它.

这也是为什么TinyMCE提供了一个remove()方法来直观地改变东西的原因,因为destroy()并不是为了实现完全相同的目的.

为了完全销毁TinyMCE,您可以发出remove()进行可视化清理,然后使用dispose()进行内存清理; 但是这些方法是特定于实现的,我不确定TinyMCE会如何反应.