在jqueryUI模式对话框中使用tinyMCE时,我无法使用超链接或“插入图像”功能。
基本上,经过大量搜索,我发现了这个:
http://www.tinymce.com/develop/bugtracker_view.php?id=5917
奇怪的是,对我而言,由于当jqueryUI的模态属性设置为false时问题不存在,因此它不会产生一个小问题,而且更多的是jqueryUI问题。
有了更丰富的形式,我看到发生的事情是,只要tinyMCE失去焦点,表格中的第一个元素就会聚焦,即使它不是聚焦/点击的那个。
有些JavaScript大师是否知道如何保持对话模态并使tinyMCE有效?
答案 0 :(得分:5)
当重写_allowInteraction时不会:
$(document).on('focusin', function(e) {
if ($(event.target).closest(".mce-window").length) {
e.stopImmediatePropagation();
}
});
我真的不能相信它。我是从 this thread on the TinyMCE forums得到的。
(他们将他们的bugtracker移到了github。tinymce/issues/703是相应的github问题。)
答案 1 :(得分:0)
似乎还没有针对此问题的适当解决方案。这是一种黑客攻击,但它真的对我有用。 每次打开对话框时,请删除文本区域并重新添加,如下所示,
var myDialog = $('#myDialog');
var myTextarea = myDialog.find('textarea');
var clonedTextArea = myTextarea.clone(); // create a copy before deleting from the DOM
var myTextAreaParent = myTextarea.parent(); // get the parent to add the created copy later
myTextarea.remove(); // remove the textarea
myDialog.find('.mce-container').remove(); // remove existing mce control if exists
myTextAreaParent.append(clonedTextArea); // re-add the copy
myDialog.dialog({
open: function(e1,e2){
setTimeout(function () {
// Add your tinymce creation code here
},50);
}
});
myDialog.dialog('open');
答案 2 :(得分:-1)
这似乎可以解决它,或至少解决它(把它放在你的$(文件).ready())中:
$.widget('ui.dialog', $.ui.dialog, {
_allowInteraction: function(event) {
return ($('.mce-panel:visible').length > 0);
}
});