完全删除JQuery tinyMCE

时间:2012-04-09 13:04:49

标签: jquery tinymce

我已经像这样初始化了tinyMCE:

$('#text').tinymce({
    // Location of TinyMCE script, optional, already loaded in page.
    script_url : '../adminContent/js/tiny_mce/tiny_mce.js',

    // General options
    theme : "advanced",
    plugins : "table,advimage,advlink,iespell,inlinepopups,preview,contextmenu,paste,visualchars",

    // Theme options
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,forecolor,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image",
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,removeformat,cleanup,code,|,preview,tablecontrols,|,hr,visualaid,|,charmap,iespell",
    theme_advanced_buttons3 : "",

    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true
});

上面的代码完美无缺。问题是当我尝试删除tinyMCE时。

我的删除代码是:

$('#text').tinymce().execCommand('mceRemoveControl', false, 'text');

我也试过了:

$('#text').remove();

$('#text').tinymce().remove();

第一个似乎没有做任何事情。最后两个给了我这个错误:

  

未捕获的ReferenceError:t未定义

虽然HTML文档加载了tinymce,但我使用以下命令加载另一个脚本:

$.getScript(viewPath + '/mod/adminContent/js/editContent.js', function(){
    initEditContent(popup);
});

popup是对加载了tinymce的弹出窗口的引用。它只是一个使用jquery创建的div。 div的内容使用jquery ajax加载。

editContent.js如下所示:

var contentID;
function initEditContent(popup){
    contentID = $('#contentID').val();

    tinyMCE.execCommand("mceAddControl", true, 'text');

    setTimeout(reposition, 50);
    setTimeout(reposition, 150);
    setTimeout(reposition, 250);

    // Submit form
    $('#editTextForm').ajaxForm(
    {
        // Before submit
        beforeSubmit: function(){
            //setPopupMessage(popup, '<div id="loading"><img src="../../img/loading.gif" />&nbsp;Please wait...</div>');
        },

        // Once submit completed
        success: function(responseText){
            tinyMCE.execCommand("mceRemoveControl", true, 'text');
            //closePopup(popup);

            // Update button with new data
            $('#' + contentID).html(responseText);
        }
    });
}

3 个答案:

答案 0 :(得分:4)

从版本3.5b3开始,这看起来像tinyMCE的一个问题。它适用于版本3.5b2。

请参阅my fiddle示例。

你会发现它加载和卸载都很好。但是将版本更改为edge或3.5b3并且在卸载时会出现错误。

正如tinyMCE bug site所述:

  

问题描述

     

第13518行的Javascript错误.t未定义。

     

重现的步骤

     
      
  1. 调用tinyMCE.execCommand('mceRemoveControl',false,idOfTextarea);
  2.         

    <强>问题

         

    在3.5b3中,您将t重命名为self,但未在同一行中重命名已使用的变量以获取文档。

         

    <强>解决方案

         

    将第13518行(在函数hide()中)更改为:var self = this,doc = self.getDoc();

答案 1 :(得分:1)

问题解决了。对于那些感兴趣的人,我在HTML文档中加载了tinyMCE,然后当我需要初始化它时,我做了:

tinyMCE.init({
    mode : "textareas",
    // General options
    theme : "advanced",
    plugins : "table,advimage,advlink,iespell,inlinepopups,preview,contextmenu,paste,visualchars",

    // Theme options
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,forecolor,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image",
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,removeformat,cleanup,code,|,preview,tablecontrols,|,hr,visualaid,|,charmap,iespell",
    theme_advanced_buttons3 : "",

    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true,

    oninit: function(){
        alert('tinyMCE loaded');
    }
});

每次需要tinyMCE编辑器时都会调用上面的代码。然后,当我关闭弹出窗口时,我将其删除:

tinyMCE.remove('text');

答案 2 :(得分:0)

$('#text').tinymce().execCommand('mceRemoveControl', true, 'text');

其中'text'是编辑器的ID

<textarea id='text' .....