TinyMCE 4 - remove()或destroy()

时间:2013-07-20 05:45:25

标签: jquery tinymce

我正在使用TinyMCE editor. 我想删除或销毁tinymce编辑器(页面包含多个编辑器)。同时删除tinyMCE添加的类和ID。

但保留可编辑内容

我试过了:

tinymce.remove()
tinymce.destroy()
tinymce.execCommand('mceRemoveControl',true,'.editable');

请注意:

我的编辑器类是.editable,而且我的页面中有一个以上的编辑器。

15 个答案:

答案 0 :(得分:36)

我遇到了同样的问题。在第4节中,上述所有建议对我都不起作用,但这样做了:

tinymce.remove("div.editable");

... regenerated HTML dynamicaly ...

tinymce.init(...);

我使用内联编辑器:

tinymce.init({
    selector: "div.editable",
    inline: true,
    plugins: [
    "advlist autolink lists link image charmap print preview anchor",
    "searchreplace visualblocks code fullscreen",
    "insertdatetime media table contextmenu paste"
    ],
    menubar: false,
    toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"});

希望这有帮助

答案 1 :(得分:29)

如果有人来到这里使用jQuery版本的TinyMce,请使用以下代码删除实例

$("#textarea_id").tinymce().remove();

答案 2 :(得分:20)

您需要一个编辑器ID(通常等于您的编辑器html根元素id(在大多数情况下是textarea))。

示例:

tinymce.execCommand('mceRemoveControl', true, 'my_original_textarea_id');

答案 3 :(得分:12)

以下代码正在运作

tinymce.get(id).remove();

答案 4 :(得分:9)

只需使用

tinymce.remove()

删除所有编辑器。

答案 5 :(得分:3)

请记住,如果给定textarea有id,则tinyMCE会出于某种奇怪的原因使用它,即使已使用selector参数将编辑器应用于给定元素。然后,此ID在内部数组中使用 - tinyMCE.editors未清除(如果您使用tinymce.execCommand('mceRemoveControl', true, [id])则不会清除,remove实际删除editors并阻止tinyMCE再次申请)。因此,如果你有一个应用了tinyMCE的动态内容,它将工作一次,但永远不会再次。要解决此问题,您需要按delete tinyMCE.editors[$(node).getAttribute('id')]

手动清理此数组

答案 6 :(得分:2)

如果你有多个TinyMCE实例,你可以使用以下代码片段来关闭TinyMCE的每个实例:

for (var i = tinymce.editors.length - 1 ; i > -1 ; i--) {
    var ed_id = tinymce.editors[i].id;
    tinyMCE.execCommand("mceRemoveEditor", true, ed_id);
}

我在加载Ajax内容之前使用它。

答案 7 :(得分:2)

tinymce.EditorManager.remove() 这对我有用

答案 8 :(得分:1)

参加派对的时间不多,但最近我将tinyMCE jQuery版本添加到了我的角色项目中。由于一些原因,我不想使用角度第三方代码,只是想让jQuery版本工作。

所以这是我的代码,使TinyMCE 4.x能够在角度上工作,即使使用ng-repeat。

你所要做的就是用课堂装饰你的textareas" TinyMCEEditorBox"并且在您删除或添加导致更新的项目时(例如将更多项目添加到ng-repeat中),可以随时调用此方法。

$scope.RebindTinyMCE = function ()
{
    var tmceSelector = ".TinyMCEEditorBox";

    for (var i = tinymce.editors.length - 1 ; i > -1 ; i--)
    {
        tinyMCE.execCommand("mceRemoveEditor", true, tinymce.editors[i].id);
    }

    setTimeout(function () {
        $(tmceSelector).tinymce({
            menubar: false,
            statusbar: false,
            toolbar: 'bold italic underline | alignleft aligncenter alignright | bullist numlist outdent indent | link',
        });
    }, 50);
}

答案 9 :(得分:0)

当使用tiyMCE.init({})函数时,@ nimauro的答案对我有用,所以对于每次卸载页面,你只需触发tinymce.get(“real_element_id”)。remove(); < / p>

这种方法对我有用。

BTW,我很喜欢这个版本

// tinymce.cachefly.net/4.1/tinymce.min.js

答案 10 :(得分:0)

我们在调用时遇到错误elementReference.destroy() // destroy是一个dojo函数,我们用elementReference.domNode.remove()替换了该代码。我们也是使用tinymce.min.js,它给了我们NS_ERROR_UNEXPECTED

答案 11 :(得分:0)

if (typeof tinyMCE != 'undefined') {
    if (tinyMCE.activeEditor == null || tinyMCE.activeEditor.isHidden() != false) {
        tinyMCE.editors=[]; 
    }
    tinyMCE.editors=[]; tinymce.init({selector:'textarea',  plugins : 'advlist autolink link image lists charmap print preview'});
}else{
    tinymce.init({selector:'textarea',  plugins : 'advlist autolink link image lists charmap print preview'});
}

答案 12 :(得分:0)

您只需使用此代码即可删除所有可编辑的textarea:

tinyMCE.remove(&#34; .editable&#34);

这里有关于tinyMCE删除的更多信息: http://archive.tinymce.com/wiki.php/api4:method.tinymce.EditorManager.remove.static

答案 13 :(得分:0)

假冒原始网站

TinyMCE将检查其是否已加载到window.scripts中。如果删除相应的条目,TinyMCE的行为将像未处理的文档一样。

function cleanTinyMCE() {
  for (var i=0; i < window.scripts.length; i++) {
    if (window.scripts[i].match('.*tinymce.*js.*')){
      delete window.scripts[i];
      return;
    }
  }
}

答案 14 :(得分:0)

只需使用此工具,您就可以删除 TinyMCE 编辑器:

tinymce.remove('#your_textarea_id');