Html TinyMCE从自定义标记中删除属性

Html TinyMCE从自定义标记中删除属性,html,xhtml,tinymce,Html,Xhtml,Tinymce,我试图在html代码中插入一个占位符,稍后将动态替换该占位符。到目前为止,我成功地插入了代码,TinyMCE识别出了标记,但当我尝试向其附加id属性时,该属性由于未知原因被删除。我尝试了大多数附加选项,但似乎都不起作用 当前配置: extended_valid_elements : "module[id]", valid_children : "module[img]", custom_elements : "module", 创建按钮的代码(随后插入代码): 设置:功能(ed){ //添加自

我试图在html代码中插入一个占位符,稍后将动态替换该占位符。到目前为止,我成功地插入了代码,TinyMCE识别出了标记,但当我尝试向其附加id属性时,该属性由于未知原因被删除。我尝试了大多数附加选项,但似乎都不起作用

当前配置:

extended_valid_elements : "module[id]",
valid_children : "module[img]",
custom_elements : "module",
创建按钮的代码(随后插入代码):

设置:功能(ed){
//添加自定义按钮
ed.addButton(“模块”{
标题:“模块”,
图片:“images/app-x-php-icon.png”,
onclick:function(){
ed.focus();
var options=document.getElementById('rendermcemods').innerHTML+“”;
var optionList=options.split(“|”);
变量名称=提示(“请输入模块名称:”+选项,选项列表[0]);

对于(var i=0;i我会将
模块
放入有效的\u元素,而不是
扩展的\u有效的\u元素/自定义的\u元素
扩展的\u有效的\u元素
有时会表现得很奇怪

我自己的配置如下所示(您需要放大自己的
valid_元素
valid_子元素
设置(如果未在自定义tinymce配置中使用,则必须使用默认设置(可在moxiecode网站上找到)):


我最终使用的解决方案是修改源代码中的blockElementsMap和transitional map taht。这似乎是将自定义标记识别为“blocklevel”元素的唯一方法,并且能够完全按照我希望的方式在代码中添加它以供日后处理。

这应该可以工作(我也在本地进行了测试)。请尝试不使用
自定义元素
行。您能发布整个配置吗?@Madmartigan当不使用cutom元素行时,代码将被替换为:“

”好的,那么请发布您的整个配置以及您使用的TinyMCE的版本。如果您能给我们一种复制问题的方法,它可以更容易地解决;正如我所说的,这是对我来说已经很好了。我正在使用3.4.7,我相信这是最新的一个。我将对此进行测试。我只是想在“内容”变量中添加一个简单的“”来解决消失的id,但您的解决方案应该更稳定、更整洁。
setup : function(ed) {
    // Add a custom button
    ed.addButton("module", {
        title : "Module",
        image : "images/app-x-php-icon.png",
        onclick : function() {
            ed.focus();
            var options = document.getElementById('rendermcemods').innerHTML+"";
            var optionList = options.split('|');
            var name=prompt("Please enter module name out of: "+options,optionList[0]);
            for(var i=0;i<optionList.length;i++){
                if(optionList[i] == name){ 
                    var patt=new RegExp('<module id="'+name+'">.*</module>','ig');
                    var content = '<module id="'+name+'"><img src="images/app-x-php-icon.png" /></module>';
                    //alert(content);
                    if(! patt.test(ed.getContent())){ 
                        ed.execCommand('mceInsertContent', false,content);
                    }                            
                }
            }                                            
        }   
    });                
}
<module><img src=images/app-x-php-icon.png" alt="" /></module>
// General options
        mode : "none",
        theme : "advanced",
        plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,\n\
                    save,advhr,advimage,advlink,emotions,iespell,inlinepopups,\n\
                    insertdatetime,media,searchreplace,print,contextmenu,paste,\n\
                    directionality,fullscreen,noneditable,visualchars,\n\
                    nonbreaking,xhtmlxtras",

        // Theme options
        theme_advanced_buttons1 : "fullscreen,help,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect,|,module",
        theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,|,forecolor,backcolor",
        theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,ltr,rtl,|,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,blockquote,|,insertfile,insertimage",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,

        // Skin options
        skin : "o2k7",
        skin_variant : "silver",

        document_base_url : "http://www.example.com",
        content_css : "content.css", 
        extended_valid_elements : "module[id]",
        valid_children : "module[img]",
        /*custom_elements : "module", */           

        // Drop lists for link/image/media/template dialogs            
        external_link_list_url : "js/generateList.php?A=link",
        external_image_list_url : "js/generateList.php?A=image",
        media_external_list_url : "js/generateList.php?A=media",

        setup : function(ed) {
            // Add a custom button
            ed.addButton("module", {
                title : "Module",
                image : "images/app-x-php-icon.png",
                onclick : function() {
                    ed.focus();
                    var options = document.getElementById('rendermcemods').innerHTML+"";
                    var optionList = options.split('|');
                    var name=prompt("Please enter module name out of: "+options,optionList[0]);
                    for(var i=0;i<optionList.length;i++){
                        if(optionList[i] == name){ 
                            var patt=new RegExp('<module id="'+name+'">.*</module>','ig');
                            var content = '<module id="'+name+'"><img src="images/app-x-php-icon.png" /></module>';
                            //alert(content);
                            if(! patt.test(ed.getContent())){ 
                                ed.execCommand('mceInsertContent', false,content);
                            }                            
                        }
                    }                                            
                }   
            });                
        }
// The valid_elements option defines which elements will remain in the edited text when the editor saves.
valid_elements: "@[id|class|title|style|onmouseover]," +
"module," +
"a[name|href|target|title|alt]," +
"#p,blockquote,-ol,-ul,-li,br,img[src|height|width],-sub,-sup,-b,-i,-u," +
"-span[data-mce-type],hr",

valid_children: "body[p|ol|ul|hr]" +
"module[img]" +
",p[a|span|b|i|u|sup|sub|img|hr|#text|blockquote]" +
",span[a|b|i|u|sup|sub|img|#text|blockquote]" +
",a[span|b|i|u|sup|sub|img|#text|blockquote]" +
",b[span|a|i|u|sup|sub|img|#text|blockquote]" +
",i[span|a|b|u|sup|sub|img|#text|blockquote]" +
",sup[span|a|i|b|u|sub|img|#text]" +
",sub[span|a|i|b|u|sup|img|#text]" +
",li[span|a|b|i|u|sup|sub|img|ol|ul|#text]" +
",ol[li]" +
",ul[li]",