【问题标题】:"Uncaught ReferenceError: t is not defined" while trying to remove a div which has a tinymce instance尝试删除具有 tinymce 实例的 div 时出现“未捕获的 ReferenceError:t 未定义”
【发布时间】:2012-10-20 21:02:29
【问题描述】:

这是我面临的问题

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

【问题讨论】:

  • 你确定这与tinymce有关,而不仅仅是变量范围的问题吗?通过尝试在没有初始化 tintmce 的情况下删除主 div 来检查。
  • 是的,我敢肯定,因为同一页面中还有其他 div,我确实以同样的方式删除了这些 div,但不会显示此错误,但只有当我尝试使用 tinymce 删除 div 时才会出现此错误。如果我从 div 中删除 tinymce,它会毫无问题地删除

标签: jquery html tinymce


【解决方案1】:

我不知道这是否与您有关,因为您尚未发布 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 就可以工作(至少它对我有用)。希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 2020-01-10
    • 2017-08-31
    • 2023-03-04
    • 1970-01-01
    • 2017-12-13
    • 2020-12-01
    • 2022-01-20
    • 2020-07-19
    相关资源
    最近更新 更多