我有一个带有按钮的MVC.net页面,可以打开一个jquery模式对话框。我像这样打开对话框
$(dialogId).dialog(
{
dialogClass: 'test', closeOnEscape: true,
title: title,
height: height,
width: width,
minHeight: minHeight, maxHeight: maxHeight,
minWidth: minWidth, maxWidth: maxWidth,
resizable: resizable,
modal: true,
show: 'blind',
hide: 'blind',
open: addTinyMCE
});
addTinyMCE是一个存在于partial中的函数,partial是模态的内容。添加微小的MCE代码看起来像这样
function addTinyMCE() {
$('#emailMessage').tinymce({
script_url: '/Scripts/tiny_mce/tiny_mce.js',
theme: "advanced",
plugins: "myButton,autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
theme_advanced_buttons1: "xedomenubutton,undo,redo,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull",
theme_advanced_buttons2: "formatselect,fontselect,fontsizeselect",
theme_advanced_buttons3: "bullist,numlist,|,outdent,indent,|,link,unlink,anchor,image,|,insertdate,inserttime,|,forecolor,backcolor,|,fullscreen",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_resizing: true,
skin: "o2k7",
template_external_list_url: "js/template_list.js",
external_link_list_url: "js/link_list.js",
external_image_list_url: "js/image_list.js",
media_external_list_url: "js/media_list.js"
});
}
myButton是一个tinyMCE按钮,我为一些自定义操作创建了它。
当我单击主页面上的按钮打开对话框时,对话框按预期打开,但是tinymce编辑器在部分对话框弹出窗口中对着textarea闪烁,然后返回到正常的textarea。部分还有一个下拉列表,当更改时,更新tinymce textarea(ajax)的内容,再次,textarea出现与附加的tinymce编辑器,然后返回到正常的textarea。
此外,这是一个模态对话框,何时应调用以下命令来创建和添加自定义按钮。
tinymce.create
tinymce.PluginManager.add
当我尝试将编辑器附加到主页面中的textarea时,一切都按预期工作(编辑器附加到文本区域,显示自定义按钮并正常运行)。
有什么建议吗?
我正在使用tinymce编辑器的jquery版本。
编辑:
我最终回到了使用jquery版本的tinyMCE,因为它在UI对话框中比标准版本运行得更好。
我设法正确加载自定义按钮,当我关闭并打开对话框时,编辑器可用。
我唯一的问题是,在第一次打开对话框时,tinyMCE会附加到textarea然后消失。我决定把我的文档准备好功能
setTimeout(function () { initTinyMCE(); }, 500);
这是有效的,但不是解决方案。 所以这里似乎存在时间问题。
我怎样才能确保textarea已经准备好接受tinymce编辑器,或者是过早发射的tinymce init?
答案 0 :(得分:0)
我没有使用过jQuery版本,所以这是一个黑暗的镜头。常规版本不能通过Ajax延迟加载。
http://tinymce.moxiecode.com/forum/viewtopic.php?pid=66531#p66531
我使用的黑客,尚未经过广泛测试,运行:
window.tinyMCEPreInit = {base : 'your/js/folder/tinymce', suffix : '', query : ''};
// Lazily load your TinyMCE javascript
window.tinymce.dom.Event.domLoaded = true;
答案 1 :(得分:0)
jQuery tinymce构建是问题的根源,而且速度很慢。我建议使用常规的tinymce构建和addionally加载jQuery。
应在初始化时初始化自定义按钮。这可以使用自己的插件或setuop初始化参数来完成。