我已经像这样初始化了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" /> Please wait...</div>');
},
// Once submit completed
success: function(responseText){
tinyMCE.execCommand("mceRemoveControl", true, 'text');
//closePopup(popup);
// Update button with new data
$('#' + contentID).html(responseText);
}
});
}
答案 0 :(得分:4)
从版本3.5b3开始,这看起来像tinyMCE的一个问题。它适用于版本3.5b2。
请参阅my fiddle示例。
你会发现它加载和卸载都很好。但是将版本更改为edge或3.5b3并且在卸载时会出现错误。
正如tinyMCE bug site所述:
问题描述:
第13518行的Javascript错误.t未定义。
重现的步骤:
- 调用tinyMCE.execCommand('mceRemoveControl',false,idOfTextarea);
醇><强>问题强>:
在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' .....