2

在下面的脚本中(现场示例位于http://jsbin.com/aliket/1/,源代码位于http://jsbin.com/aliket/1/edit),我创建了两个对话框,其中一个( #dialog2) 是另一个 (#dialog1) 中的孩子。如果我在#dialog1 之前创建#dialog2,打开#dialog1 然后打开#dialog2,TinyMCE 插件将不再工作。通过不工作,我的意思是 TinyMCE 的文本框被遮住了,任何以前输入的 HTML 都消失了。这是两个对话框的顺序问题还是 TinyMCE 的问题?为什么会这样?但是,我确实知道如何解决它:只需在#dialog2 之前创建#dialog1。谢谢

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> 
        <title>Testing</title>  
        <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> 
        <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
        <script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
        <script src="http://tinymce.cachefly.net/4.0/tinymce.min.js"></script>
    </head>

    <body>
        <button id="click1">Click 1</button>
        <div id="dialog1" title="dialog1"><div id="tinymce"></div><button id="click2">Click 2</button></div>
        <div id="dialog2" title="dialog2">Hello</div>
    </body>

    <script>
        tinymce.init({selector: "#tinymce"});
        $(function() {
            $('#click2').click(function(){$("#dialog2").dialog("open");});
            $("#dialog2").dialog({autoOpen:false,resizable:false,height:300,width:240,modal:true});
            $("#click1").click(function(){$("#dialog1").dialog("open");});
            $("#dialog1").dialog({autoOpen: false,modal: true});    
        });
    </script>
</html> 
4

1 回答 1

0

我认为这里的问题是您在打开另一个具有相同 ID 的编辑器实例之前没有关闭您的编辑器实例。使用 mceCommandmceRemoveControl关闭此类编辑器实例。

于 2013-05-22T09:25:39.850 回答