JCE / TinyMCE-不断尝试修复有效和无效的HTML


9

在我们使用过的所有Joomla编辑器中,JCE最适合我们的目的和客户。但是编辑器存在一些问题,当我们编写某些代码时,可能会导致问题,然后将其切换为所见即所得,然后编辑器将尝试“修复”我们完全有效的html。

在您提出问题之前-是的,我们已将其设置为允许JCE喜欢限制的所有那些元素,不,它没有设置为验证/清除html。我们唯一的限制是将内容粘贴到编辑器中。

展览A:

<a href="#"></a>

这将在切换编辑器并返回时消失。替换为:

<p>&nbsp;</p>

图表B:

<a id="#nameofanchor"></a>

更改为:

<p>&nbsp;</p>

展览C:

<div><a id="#nameofanchor"></a></div>

更改为:

<div>&nbsp;</div>

图表D:

<a id="hello" class="link">Hello</a>

更改为:

<p><a id="hello" class="link"></a>Hello</p>

展品E:

<a href="#">
<div>
<h2>Our Work</h2>
</div>
</a>

更改为:

<p><a href="#"></a></p>
<div>
<h2><a href="#">Our Work</a></h2>
</div>
<p>&nbsp;</p>

现在,我们想使用id代替名称作为锚,因为它在HTML5下有效,而名称在技术上则无效。另外,在哪个Universe中,对链接的无效分配是什么?

而且,既然用链接包装div是完全合法的,那么JCE为什么还要将它们删除呢?

这只是我所缺少的设置吗?是否有人对我如何使用编辑器有任何见识,以便我们可以在编辑器中根据需要进行编码,但是我们的客户不能仅仅通过保存所见即所得来破坏它?

编辑:我已经在chrome,firefox和safari中进行了测试。不要以为它与浏览器无关。

编辑:我已经使用容器设置对此进行了测试。导致“段落容器”和“进入Enter的段落”以及“进入”时出现的“ Div容器”和“ div”都会导致此。其他两个(输入时没有容器和段落,输入时没有容器和换行符)不会导致它。问题是-我需要第一个设置!尽最大可能为客户带来疑问的好处,但他们根本无法信任他们遵循说明并在其文本中添加段落格式。

确认:TinyMCE也会发生这种情况。

所以-我们知道是什么原因造成的-“段落容器”设置-现在我们如何在保持设置有效的同时解决它?


1
很高兴不仅仅是我。
克雷格2014年

在我们先前的讨论和得出的结论来自JCE元素包装功能之后,我不确定这实际上是一个问题。如果您相信您的客户能够通过切换编辑器状态来添加上述类似的html代码段,那么为什么不信任他们,他们会使用适当的<p>标签包装其内容?
FFrewin

我们的客户不添加html。我们编写html,他们使用编辑器端-切换编辑器后,它会破坏我们完全有效的html。
Faye 2014年

无论如何,如果您给客户一个充满html的页面的编辑访问权限,那么,客户会以一种或另一种方式破坏您的html。使用JCE的模板管理器或其他“宏”标签又会如何呢?
FFrewin

Answers:


7

我在所有站点上都使用JCE编辑器,但是我们也开始安装NoNumbers的Sourcerer。这为JCE编辑器提供了一个简单的INSERT CODE按钮,以防止其被修改。

http://www.nonumber.nl/extensions/sourcerer


谢谢。太好了,我们的东西上已经没有安装数字了,因为这太棒了,我不知道它有这个数字。太棒了。
Faye

1
无需使用Sourcerer添加HTML。
BodgeIT 2014年

但是,我还是必须这样做,否则JCE会剥离出完全有效的HTML。
Faye

2

JCE有一些秘密设置。我知道以下设置停止&nbsp;添加到空div中,可能用于清除浮点数,这会在渲染时导致行高问题:

In the Editor Global Configuration, add:
remove_div_padding:1 
to Custom Configuration Variables. 

我希望还有更多可以控制编辑器任何方面的信息。


1

我认为它必须是“ 个人资料”->“编辑器参数”-> “印刷术”中的印刷术设置。尝试在Enter上将Container Element&Enter键设置为NoContainer&LineBreak,以查看它是否仍对您的html应用任何更改。

还要记住,HTML验证设置为每个编辑器配置文件都有设置,并且Joomla还在用户组设置的全局配置页面中提供了全局过滤器。确保那里没有每个用户组的设置。


是的,我去过所有编辑器配置文件,等等。我已经正确设置了所有HTML文件。更换容器可能会解决它-但它将引起另一个问题,同样是有问题的。如果客户可以添加未包含在段落标签中的文本内容,则其文本格式将有所不同。我们也不想要。我将对其进行测试,以查看是否会导致锚点出现相同的问题,但就段落标签添加自身而言,这对于本课程而言是相当不错的。
Faye 2014年

是的,是由容器设置完成的-但正如我所说,这对我们的客户来说是一个更大的问题,因为他们无法粘贴并使用自动段落标签包装其内容。
Faye 2014年

我认为这是因为您的代码示例包含换行符,这是JCE创建段落的一种“规则”。为了做到这一点,应该有一个这样的标准。您的客户是否要在编辑器中粘贴此类html代码段?
FFrewin

我们的客户不会使用html,但是我们仍然在他们后面做HTML代码。我们为他们创建粘贴/键入直接内容的区域。另外-如果您是要在一行中输入html而不是像上面那样组织,那么我也尝试过。我得到完全相同的结果。
Faye 2014年

0

这种行为并非JCE独有。TinyMCE的行为方式相同。此行为可能不仅限于TinyMCE,它可能是浏览器DOM行为。

实际上,JCE会尝试保留一些空标签,而采用的方法是填充空格。

https://github.com/widgetfactory/jce-editor/blob/master/editor/tiny_mce/plugins/cleanup/editor_plugin.js


不会说谎,我不知道这意味着什么。你能再分解一点吗?我在那个链接里看什么?您是什么意思?在上面的代码示例中添加一个不间断的空格不会改变最终结果,我对此进行了彻底的测试。
Faye 2014年

我将默认编辑器切换到了Joomla预先安装的TinMCE,并测试了附件A。在编辑器所见即所得和源代码视图之间切换时,它也删除了标签。即,这种行为似乎不是JCE独有的。因此,我想知道这是否不是TinyMCE所独有的,使用浏览器执行就地编辑功能时可能会发生同样的情况。JCE代码参考是第129行,其中在开始和结束标签之间使用了不间断的空格。这对于JCE和TinyMCE都适用。奇怪。
彼得·怀斯曼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.