【问题标题】:TinyMCE 4 - remove() or destroy()TinyMCE 4 - remove() 或 destroy()
【发布时间】:2013-07-19 12:11:14
【问题描述】:

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

但留下可编辑的内容

我试过了:

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

请注意:

我的编辑器类是.editable,我的页面中有不止一个编辑器。

【问题讨论】:

  • tinymce.remove() 函数在编辑器调用弹出窗口中需要 textarea 时为我工作。

标签: jquery tinymce


【解决方案1】:

我遇到了同样的问题。在 v4 中,上述所有建议都对我不起作用,但确实如此:

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"});

希望这有帮助

【讨论】:

  • 这似乎并不总是能真正删除所有所说的编辑器。有时它只是出错,有时它只是偶尔删除它们。
  • 这对我删除编辑器很有用,但是当我重新添加编辑器时,它们是不可编辑的。 tinyMCE.remove('textarea'); 我没有用于 textareas 的唯一 ID,它们是动态生成的,因此我有一个唯一的编辑器选择器类来识别 tinymce 编辑器。删除和重新添加编辑器后如何使编辑器可编辑?
  • 文档链接(带有示例):tinymce.com/docs/api/tinymce/root_tinymce/#remove
【解决方案2】:

以防万一有人到这里使用 jQuery 版本的 TinyMce,请改用以下命令来删除 一个实例

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

【讨论】:

  • 这只会删除编辑器的第一个实例。如果您需要删除与选择器匹配的所有实例,那么您需要这样做:$(".editable").each(function() { $(this).tinymce().remove();});
  • 我确实在“一个实例”上面写了,因此是 tinymce 的单个实例。当然,有多种方法可以遍历多个实例并删除它们。 Niels 就是这样一种方法。
  • 我发现这对我有用:tinymce.get('textarea_id').remove();
  • 现在代码不同了:tinymce.remove('.class_objects');或 tinymce.remove('#id_object');
【解决方案3】:

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

例子:

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

【讨论】:

  • 我可以使用tinyMCE.remove() 删除所有编辑器,但如何再次添加? .你的代码也在工作。这样做的目的是:我的可编辑 div 是使用 ajax 加载的,所以当它加载时,我需要将 TinyMce 重新绑定到该 div
  • 你想要实现的是正确的方法:tinymce.execCommand('mceAddControl', true, 'my_original_textarea_id');
  • 我在 4.2 中偶然发现了同样的问题,同样的情况只有 tinyMCE.remove();然后 tinymce.execCommand('mceAddControl', true, '#IDNAME');最后将tinymce编辑器初始化为 $("#ProductDescription").tinymce({OPTIONS}) 修复了问题
【解决方案4】:

以下代码正在运行

tinymce.get(id).remove();

【讨论】:

    【解决方案5】:

    简单地使用

    tinymce.remove()
    

    删除所有编辑器。

    【讨论】:

    • 你甚至没有读过这个问题。这是 OP 尝试的第一件事。
    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

      您只需使用此代码即可删除所有可编辑的文本区域:

      tinyMCE.remove(".editable");

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

      【讨论】:

      • tinyMCE.remove(".editable") 不会为我删除编辑器。我实际上必须使用tinyMCE.get(".editable").remove() 从内部数组中删除编辑器。
      【解决方案8】:

      如果您有多个 TinyMCE 实例,您可以使用以下代码 sn-p 关闭每个 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 内容之前使用它。

      【讨论】:

        【解决方案9】:

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

        【讨论】:

        • tinymce.EditorManager.remove('.editable') 为我工作。
        【解决方案10】:

        晚会有点晚了,但我最近在我的 Angular 项目中添加了 tinyMCE jQuery 版本。出于几个原因,我不想使用 angular 3rd 方代码,只是希望 jQuery 版本能够工作。

        这是我的代码,用于使 TinyMCE 4.x 以 Angular 工作,即使使用 ng-repeat。

        您所要做的就是用“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);
        }
        

        【讨论】:

          【解决方案11】:

          伪造处女网站

          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;
              }
            }
          }
          

          【讨论】:

            【解决方案12】:

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

            【讨论】:

              【解决方案13】:
              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'});
              }
              

              【讨论】:

                【解决方案14】:

                使用tiyMCE.init({}) fuction 时,@nikmauro 的回答对我有用,因此每次卸载页面时,您只需触发tinymce.get("real_element_id").remove();

                这种方法对我有用。

                顺便说一句,我觉得这个版本很有趣

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

                【讨论】:

                  【解决方案15】:

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

                  tinymce.remove('#your_textarea_id');
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2013-06-23
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-03-02
                    • 1970-01-01
                    • 2013-05-11
                    • 1970-01-01
                    • 2011-01-13
                    相关资源
                    最近更新 更多