1

这是我面临的问题

  1. 我有一个包含tinymce 实例的div。
  2. 此 tinymce 实例位于同一 div 内的无序列表中
  3. 当我尝试通过单击按钮删除主 div 时,我收到“未捕获的 ReferenceError:t 未定义”错误。
  4. 但是当我双击按钮时,div 被删除。但我希望在第一次点击时删除 div。
  5. 我试过 tinymce.execCommand('mceRemoveControl', false, tinymceId); (tinymceID 是 tinymce textarea 的 id)要删除 tinymce 的实例但无济于事

下面是我用来删除 div 的代码

$('div.form').on('click','a.cancel-btn',function(e){
    var kk = $(this);   
    e.preventDefault();

    $('.dialog').html('Are you sure you wish to delete this asset ? Selecting \'Yes\' will delete this asset.');    
    $('.dialog').dialog({
        buttons:{
            "Yes": function() {
                tinymceId = kk.closest('div.box2').find('textarea').attr('id');
                if (typeof(tinymceId) == 'string') {
                    if (tinyMCE.getInstanceById(tinymceId) != null)
                    {
                        tinymce.triggerSave();
                    tinymce.execCommand('mceFocus', false, tinymceId);
                    tinymce.execCommand('mceRemoveControl', false, tinymceId);
                        //tinyMCE.execCommand('mceFocus', false, tinymceId);
                        kk.closest('div.box2').find('textarea.tinymce_new').tinymce().remove();                   
                    }

                    kk.closest('div.box2').find('textarea').remove();
                    kk.closest('div.box2').find('textarea').remove();

                } 
                //tinyMCE.myClass.remove();
                 kk.closest('div.box2').remove();
                $(this).dialog("close");
                kk.click();
            },
            "Close": function() { $(this).dialog("close"); }
        }
    });
});
4

1 回答 1

0

我不知道这是否与您有关,因为您尚未发布 tiny_mce 初始化代码。关闭一个带有 tiny_mce 的花式框时,我遇到了同样的问题。您有正确的解决方案,即您需要在关闭时调用它:

tinyMCE.execCommand('mceFocus', false, tinymceId); //this is also needed apparently to avoid problems in IE
tinyMCE.execCommand('mceRemoveControl', false, tinymceId);

但是我尝试了这个并且它没有工作,因为我正在使用 jquery 方法初始化 tiny_mce:

 $('textarea.tinymce').tinymce({
   //init code here
 });

如果您使用此方法进行初始化,则 mceRemoveControl 不起作用,我不知道 jquery 替代方案是什么。

我的解决方案是像这样使用标准的 js init:

tinyMCE.init({
    //init code here
});

然后在您的页面 laods/fancybox 打开后调用它:

tinyMCE.execCommand('mceAddControl', false, tinymceId);

如果你像这样初始化 tinyMCE,那么 removeControl 就可以工作(至少它对我有用)。希望这可以帮助

于 2013-01-07T19:34:28.937 回答