用不同的值替换标签-AEM

用不同的值替换标签-AEM,aem,sightly,Aem,Sightly,我试图操纵从RTE读取的内容。RTE为Shift+Enter放置一个标记。为了符合要求,需要将替换为

我试图操纵从RTE读取的内容。RTE为Shift+Enter放置一个

标记。为了符合要求,需要将

替换为

在JavaScript使用API中尝试了以下操作,但以下操作不起作用,它保持标记不变

text.replaceAll(“
”,“”)

如果替换为其他标记,则会正确替换该值

text.replaceAll(
,“某物”)


在Java使用API中也尝试了同样的方法,但不起作用。任何指针都会有所帮助。

如果您查看CRXDE中的
/libs/cq/ui/rte/core/DomProcessor.js
/libs/cq/ui/rte/core/HtmlProcessor.js
,您会发现这里发生了许多特定于标记的处理

现在有多种方法可以进行:

  • 通过叠加两个JS中的一个,找出添加自定义处理的正确位置(我不确定JS叠加是否有效,因为它们是静态资源)
  • 在使用Java Use API的渲染逻辑中,添加基于字符串标记化的自定义处理步骤,以处理

    节点并向其添加属性
  • 编写一个自定义重写器来处理

    标记并向其添加所需的属性。Make由配置驱动,以允许将来的更改
  • 使用JQUERY处理

    元素并向其中添加自定义属性

  • 我没有探讨的是可以为RTE定义或定制的HTML规则,如果您有时间,您可以确定是否可以定义规则以实现您想要的,在我看来,这将是最好的解决方案

    如果您查看CRXDE中的
    /libs/cq/ui/rte/core/DomProcessor.js
    /libs/cq/ui/rte/core/HtmlProcessor.js
    ,您会发现这里发生了大量特定于标记的处理

    现在有多种方法可以进行:

  • 通过叠加两个JS中的一个,找出添加自定义处理的正确位置(我不确定JS叠加是否有效,因为它们是静态资源)
  • 在使用Java Use API的渲染逻辑中,添加基于字符串标记化的自定义处理步骤,以处理

    节点并向其添加属性
  • 编写一个自定义重写器来处理

    标记并向其添加所需的属性。Make由配置驱动,以允许将来的更改
  • 使用JQUERY处理

    元素并向其中添加自定义属性

  • 我没有探讨的是可以为RTE定义或定制的HTML规则,如果您有时间,您可以确定是否可以定义规则以实现您想要的,在我看来,这将是最好的解决方案

    您需要覆盖的rte插件位于
    /etc/clientlibs/granite/coralui2/optional/rte/js/core/plugins/KeyPlugin.js

    在第254行周围创建

    元素时,使用
    newBr.setAttribute('aria-hidden',true)

    调试提示:您可以在此文件上在Chrome中设置调试点,并在运行时更改代码(搜索KeyPlugin)
    /etc/clientlibs/granite/coralui2/optional/rte.js

    完成此操作后,单击对话框“确定”,您可以在网络控制台中看到发布到服务器的

    在此之后,您可能会遇到Sling的XSS保护,它会从生成的HTML中删除此属性。找这个日志

    org.apache.sling.xss.impl.htmlothtmlcontentContext反垃圾邮件警告:br标记包含我们无法处理的属性。咏叹调-;隐藏属性已被过滤掉,但标记仍在原位。该属性的值为“true”。

    我知道两种处理方法

  • 使用“不安全”的上下文
  • 重写
    /libs/sling/xss/config.xml
    并修改

    标记的验证

  • 您需要覆盖的rte插件是KeyPlugin,位于
    /etc/clientlibs/granite/coralui2/optional/rte/js/core/plugins/KeyPlugin.js

    在第254行周围创建

    元素时,使用
    newBr.setAttribute('aria-hidden',true)

    调试提示:您可以在此文件上在Chrome中设置调试点,并在运行时更改代码(搜索KeyPlugin)
    /etc/clientlibs/granite/coralui2/optional/rte.js

    完成此操作后,单击对话框“确定”,您可以在网络控制台中看到发布到服务器的

    在此之后,您可能会遇到Sling的XSS保护,它会从生成的HTML中删除此属性。找这个日志

    org.apache.sling.xss.impl.htmlothtmlcontentContext反垃圾邮件警告:br标记包含我们无法处理的属性。咏叹调-;隐藏属性已被过滤掉,但标记仍在原位。该属性的值为“true”。

    我知道两种处理方法

  • 使用“不安全”的上下文
  • 重写
    /libs/sling/xss/config.xml
    并修改

    标记的验证

  • 检查替换为
    但包含已知正确的数据属性是否有效-因为我觉得这就像是标记参数验证。e、 g试试
    顺便说一句,
    应该是
    (关闭标记)另外,您最终是如何输出html的?因为它可能只是清除了你的属性。@ub1k这对已知的属性(例如
    class
    )很有效。WAI是一个W3C标准,我们希望它能起作用。请检查如果替换为
    ,但包含一个已知的正确数据属性是否能起作用-因为我觉得这就像是标记参数验证。e、 试试
    顺便说一句,
    应该是