我已经写了一段时间的CMS,目前正在做的最后几个接触到它。其中之一包括使用ajax在lightbox样式的窗口中提供tinyMCE编辑器。
当加载它时,它第一次完美地工作,但是当我第二次或更多次这样做时,元素名称会变得混乱,它不会发送数据,也不会在TinyMCE窗口中显示当前值。当我使用Chrome检查元素时,我可以看到包含前一个tinyMCE窗口的span仍然存在。
我使用document.body.removeChild来删除保存它的div。有人有什么想法吗?
加法:
当AJAX完成请求后(它拥有窗口中所有html代码),它将创建一个新的div元素,并使用document.body.appendChild将元素添加到文档中,并将html代码放入div标记中。
然后,它遍历新代码并搜索该区域的脚本(其中一个是MCE启动器),并将它们附加到头部,以便执行它们。
如果用户单击“取消”而不是“保存”,它将使用: document.body.removeChild(document.getElementById("popupbox"));删除div标记,它运行良好,
但是,当我像前面提到的那样弹出并重新填充元素,并检查那里的元素时,仍然有一个由TinyMCE创建的跨度,并且命名已经更改(由于某种原因,它现在不是由' content‘标识,而是现在是8个),并且编辑器区域中没有内容。
我使用过: tinyMCE.execCommand('mceRemoveControl',true,‘mce{$used’‘name’}‘);tinyMCE.editors.destroy();
但两者都不起作用。它们将tinymce窗口返回到文本区域,但元素仍然存在。
发布于 2011-09-15 07:56:43
在移动或删除包含tinymce iframe的html元素之前,删除您描述的编辑器(使用正确的tinymce编辑器id)是一个不错的选择。在哪里加载您的tinymce.js?如果您使用ajax交付它,我认为最好在父页面(!)上加载它。更多的代码会有帮助。
编辑:-我记得有一种情况,我不得不删除一个剩余的跨度。以下是我的代码:
// remove leftover span
$('div .mceEditor').each(function(item){
if (typeof $(this).attr('style') !== "undefined" ){
$(this).removeAttr('style'); // entfernt "style: none";
}
else {
$(this).remove();
}
}); https://stackoverflow.com/questions/7420739
复制相似问题