如何防止tinymce从输入中剥离空标记?

如何防止tinymce从输入中剥离空标记?,tinymce,Tinymce,我已经在各种论坛和这里读了很多帖子,但似乎仍然无法阻止tinymce从可编辑块的末尾剥离空标签 例如,我输入以下内容: <a href="blah">zzz</a> <div class="floatClearer" style=""></div> ..在往返过程中(在HTML模式中或退出HTML模式),tinymce会剥离整个 根据我找到的各种建议,我尝试了以下几点: 删除my有效\u元素中div前面的减号 …还有这些配置。选项: v

我已经在各种论坛和这里读了很多帖子,但似乎仍然无法阻止tinymce从可编辑块的末尾剥离空标签

例如,我输入以下内容:

<a href="blah">zzz</a>
<div class="floatClearer" style=""></div>

..在往返过程中(在HTML模式中或退出HTML模式),tinymce会剥离整个

根据我找到的各种建议,我尝试了以下几点:

  • 删除my
    有效\u元素中
    div
    前面的减号
…还有这些配置。选项:

  • verify\u html:false,
  • 扩展的有效元素:“div*”,
  • 扩展的有效元素:“div[*]”,

都没有用。有什么方法可以防止这种剥离行为吗?还有其他地方我需要空标签(不仅仅是在这个例子中),所以如果可以的话,请让我知道我的问题的具体答案,而不是建议我不要使用空标签。

TinyMCE中有一个bug,现在已经修复了(在v3.5.2中)。谢谢你

对于未来的搜索者:使用该选项

此选项启用或禁用图元清理功能。如果将此选项设置为false,则将跳过所有元素清理,但仍将执行URL转换等其他清理功能

用法示例:

tinyMCE.init({
    ...
    verify_html: false
});

我之所以坚持这一点,是因为我在WordPress博客(即使是现在,2016年)上遇到了这个问题,我需要使用空div插入谷歌分析、谷歌翻译和谷歌标签管理器

典型的模式是你在博客页面的某个地方添加一个你需要的,下次你回来用TinyMCE编辑器触摸页面时,砰,你的divs消失了

我发现的唯一一件似乎总是可靠工作的事情如下所示:

<div id="google_translate_element" style="text-align:right;"><span style="display:none;">ha_ha_I_beat_u_tinyMCE</span></div>
ha\u ha\u I\u beat\u tinyMCE

因为我也遇到了麻烦,所以我在Cliff Ribaudo答案的顶部添加了我的砖块

因此,我建议在空标签中使用
,它不会被剥离,甚至不会被搜索引擎看到


这样做并没有在我的脑海中消失:

对我来说,解决方案是极端的,扩展有效元素以接受所有内容,可能并不理想,但客户很高兴

function override_mce_options($initArray) {
     $opts = '*[*]';
    $initArray['valid_elements'] = $opts;
    $initArray['extended_valid_elements'] = $opts;
    return $initArray;
}
add_filter('tiny_mce_before_init', 'override_mce_options');

如果要防止删除特定的空标记,请使用选项
extended\u valid\u elements

例如:

tinyMCE.init({
    ...
    extended_valid_elements: 'span[*]'
});

你能用你的配置创建一个小摆弄来帮助我们更好地了解你的问题吗?查看使用tinymce提琴如果我第二次打开html视图时看不到空div,我看不到空div是如何被剥离的(我使用codeplugin的“html”按钮插入div上方),但这可能是因为html视图没有显示编辑器iframe中的所有内容(如tinymce书签节点)(spans)即使是这样,我也可以确认这种行为。事实上我不确定是哪种设置强制tinymce清理过程消除了你的空div。我认为这应该是可能的。这不是允许DoevillThings()吗;tags也是吗?@RichC问得好,但我不知道答案。你可能想问一个新问题。或者自己研究这个话题,并与Stack Overflow社区分享你的发现。我只知道这种“邪恶的东西”被称为XSS漏洞。XSS使攻击者能够将客户端脚本注入其他用户查看的网页。我对其进行了测试,并将其保留在脚本标记中,因此我不会推荐此页面上的任何答案。@RichC您能告诉我您测试了哪些情况吗?a)是否使用
验证html:true
过滤掉
标记?b) 
标记是否用
验证\u html:false
过滤掉?c) 如果未指定
verify\u html
,是否过滤掉
标记?是,使用verify\u html:true过滤掉,而不是使用verify\u html:false过滤掉