完全重新加载TinyMCE

时间:2011-09-14 17:52:26

标签: javascript tinymce

我已经写了一段时间的CMS了,目前正在进行最后几次接触。其中一个包括使用ajax在灯箱样式的窗口中提供tinyMCE编辑器。

当它被加载时,第一次它完美地工作,但当我第二次或更多时,元素名称搞砸了,它不会发回数据,或者在TinyMCE窗口中显示当前值。当我使用Chrome检查元素时,我可以看到包含之前tinyMCE窗口的范围仍然存在。

我使用document.body.removeChild来删除持有它的div。有没有人有任何想法?

增加:

当AJAX从发出请求回来时(它包含窗口内的所有html代码),它会创建一个新的div元素并使用document.body.appendChild将元素添加到文档并放入html代码进入div标签。

然后它遍历新代码并搜索该区域中的脚本(其中一个是MCE发起者)并将它们附加到头部以便执行它们。

如果用户单击取消而不是保存,则会使用以下命令删除div标记: document.body.removeChild(的document.getElementById( “popupbox”)); 哪个工作正常,

然而,当我提出弹出窗口并如前所述重新填充,并检查那里的元素时,仍然有一个由TinyMCE创建的跨度并且命名已经改变(而不是被'内容'识别,它是由于某种原因现在是8)并且编辑区域中没有内容。

我用过: tinyMCE.execCommand( 'mceRemoveControl',真, 'MCE {$设置[' 名称 ']}'); tinyMCE.editors [0] .destroy();

但它们都不起作用。他们将tinymce窗口返回到textarea,但元素仍在那里。

1 个答案:

答案 0 :(得分:1)

在移动或移除包含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();
            }
        });