配置TinyMCE 4以允许内联元素或锚标记(a)成为顶级元素

时间:2016-08-22 15:58:56

标签: javascript html tinymce wysiwyg tinymce-4

基本上,我想将一个锚元素作为顶级元素放置,但每当源代码面板关闭时,TinyMCE会强制执行它自己的想法。

免责声明:TinyMCE是一款令人惊叹的免费wysiwyg编辑器工具。我只是度过了非常糟糕的一天。

令我感到痛苦的是,TinyMCE,据说是“最先进的wysiwyg html编辑器”,通常甚至不能让你输入你想要的html,而不会在第二次保存或关闭源代码视图时为你搞清楚。< / p>

我想做的就是能够关闭编辑器,让我的代码(甚至只是锚元素)完好无损。但无论我传递给TinyMCE的选项或配置如何,它都会反复撕裂我的代码;粗心地散布关于文件的元素,就像破碎的梦想碎片一样。

<!-- Casually transforming this -->

<a class="box" href="#">
 <div class="title">Box Title</div>
 <p>This is the box content!</p>
</a>

<!-- into this -->

<p><a class="box" href="#"></a></p>
<div class="title"><a class="box" href="#">Box Title</a></div>
<p><a class="box" href="#">This is the box content!</a></p>
<p></p>

出于某些原因,他们已经取消了救命的清理选项,允许你完全禁用这种憎恶,我无法让任何valid_elements / children选项正常工作。 (a [*]等)

我花了最近3个小时搜索他们的文档,论坛和堆栈溢出,但无济于事。我唯一的安慰终于成为able to put block-level elements within anchor tags,但这只能解决我问题的一部分。

我面临的主要问题是 TinyMCE不允许我在顶层放置包含块级元素的锚标记。有人知道如何配置TinyMCE来允许这个吗?

TinyMCE代码(细分为相关):

tinymce.init({
    selector: 'textarea.wysiwyg',
    schema: "html5",        
    element_format : 'html',
    plugins: ['codemirror'],
    convert_urls: false,
    valid_elements: "*[*]",
    valid_children: "+body[a],+a[div|h1|h2|h3|h4|h5|h6|p|#text]",
    //apply_source_formatting: false,                // removed I think
    //verify_html: false,                            // removed :'(
    codemirror: { indentOnInit: true },
    content_css: '/Content/Styles/Sass/main.css'
});

1 个答案:

答案 0 :(得分:1)

解决方法是禁用forced_root_block

tinymce.init({
    ...
    forced_root_block : false, // default = 'p' >= 3.0a1
});

此功能可自动确保任何非块元素或文本节点都包含在块元素中。

例如,<strong>something</strong>会产生类似<p><strong>something</strong></p>的输出。

Documentation Reference