问题 删除tinymce默认html


是否有可能删除tinymce默认的HTML?

<p><br data-mce-bogus="1"></p>

2712
2017-09-08 11:26


起源

+1 lol,半小时前我想到了同样的想法,但后来决定离开它,因为它不会打扰我;它只插在空编辑器上; - feeela
不幸的是,当在一些TinyMCE事件中调用editor.save()时,这有时会泄漏。 - Cymen


答案:


那些虚假元素通常会被删除onSave或getContent()。 你将无法使用代码插件eighter看到它们。

这种情况下的br在Firefox中是必要的,以便能够点击段落。


7
2017-09-08 11:53



只要 tinymce.activeEditor.getContent({ format: 'html' }) 似乎删除了伪造的元素。 format:'raw' 没有。 - guillaume31


解决方法是在iframe文本上应用“untag”函数,以确保用户编写的内容不是标记,我的意思是一些innerHTML或纯文本:

function untag(text){       
   var t = "" + text;                     
   t = t.replace(/<[^>]+>/g, "");  
   return t;
}

var msg = $('your_mce_iframe_id').html();

if( untag(msg) != "" ){
    // user wrote anything, validation ok
}

2
2018-04-07 02:26





而不是删除 <p><br data-mce-bogus="1"></p> 在获取tinymce内容时,我们可以通过使用下面的配置条目告诉tinymce不要产生这些虚假元素。

tinymce.init({         forced_root_block:false });

如果将此选项设置为false,则在输入键按下时将永远不会生成P标记。


1
2018-05-07 06:09



我将这个条目添加到我的init中,但没有区别:/ - djsmiley2k
如果你添加 tinymce.init({ forced_root_block : false }); 它只删除指定的块元素(在我的情况下 <p></p>)。这仍然留下了 <br data-mce-bogus="1"> 在编辑器中。对于我来说,这是一个使用parsley.js进行验证的问题。我正在尝试强制规定该字段是必需的。 Parsley认为“dta-mce-bogus”文本是合法的,所以它验证为真。插入我的记录后,该字段为空字符串。 - fujiiface