首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AEM 6.1中富文本编辑器中锚标记的href中的“‘tel”属性

AEM 6.1中富文本编辑器中锚标记的href中的“‘tel”属性
EN

Stack Overflow用户
提问于 2017-07-28 10:57:11
回答 3查看 2.3K关注 0票数 1

我使用的是AEM 6.1 SP2,我试图在锚标签的href中启用'tel‘属性,以使单击调用功能工作。我已经添加了“htmlRules”节点,并将htmlRules节点下的“协议”属性链接为“htmlRules:,mailto:,file://”。

如链接- http://labs.6dglobal.com/blog/2013-01-11/configuring-telephone-tags-within-rich-text-components-and-link-checker/中所指定的

validateHref函数在rte.js中读取'protocols‘属性并验证'tel’属性是否有效,但不确定为什么'tel‘属性在作者对话框中单击'ok’时不会在标记中持久化。

这是锚标-

<a style="color: #6c6c6c; text-decoration: underline;" class="tel" href="tel:1234 567 891">1234 567 89</a>

它就是这样在页面上呈现为标记的-

代码语言:javascript
运行
复制
<a style="color: rgb(108,108,108);text-decoration: underline;" class="tel">1234 567 89</a>

这是“htmlRules”节点xml -

代码语言:javascript
运行
复制
<htmlRules jcr:primaryType="nt:unstructured">
   <serializer jcr:primaryType="nt:unstructured">
      <cleanup jcr:primaryType="nt:unstructured">
         <pre
            jcr:primaryType="nt:unstructured"
            tagsToRemove="[\0]"/>
         <post
            jcr:primaryType="nt:unstructured"
            tagsToRemove="[\0]"/>
         <paste
            jcr:primaryType="nt:unstructured"
            tagsToRemove="[\0]"/>
      </cleanup>
   </serializer>
   <links
      jcr:primaryType="nt:unstructured"
      protocols="[http://,https://,ftp://,tel:,mailto:,file://]"/>
</htmlRules>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-01 00:58:30

这是固定的覆盖was保护配置文件在-

/libs/cq/xssprotection/config.xml

/app/cq/xssprotection/config.xml

并在regexp列表中添加“tel”属性

代码语言:javascript
运行
复制
<regexp name="telURL" value="tel:[0-9]+"/>

<attribute name="href">
 <regexp-list>
  <regexp name="onsiteURL"/>
  <regexp name="offsiteURL"/>
  <regexp name="telURL"/>
 </regexp-list>
</attribute>

这已在以下博客中描述:

https://experience-aem.blogspot.com.au/2015/05/aem-6-sp2-handling-custom-protocol-in-link-href-in-rte.html

尽管在那个博客和其他地方都提到过

基于富文本小部件的输入在HTL中呈现电话链接

https://forums.adobe.com/thread/2329552

为了美观起见,配置文件出现在-

/libs/sling/xss/config.xml

而不是在

/libs/cq/xssprotection/config.xml

即使我用的是漂亮的组件,

/libs/wcm/foundation/components/text/text.html

即使这样,在/libs/sling/xss/config.xml上覆盖配置文件也没有任何效果,我不得不在/libs/cq/xssprotection/config.xml上覆盖该文件。我使用的是AEM6.1 SP2。AEM的神秘方式

票数 1
EN

Stack Overflow用户

发布于 2017-07-28 11:42:25

您在问题中链接的解决方案似乎不适用于AEM的最新版本。

现在负责从href开始删除tel的机制是HTL保护,它在编写之前扫描属性。避免这种情况的最简单方法是在富文本组件中禁用它:${properties.text @ context='unsafe'}。不过,这不是最安全的解决方案,最好用以下步骤扩展XSS保护配置:

  1. 将XSS配置文件从lib复制到应用程序:

/libs/cq/xssprotection/config.xml -> /apps/cq/xssprotection/config.xml /libs/sling/xss/config.xml -> /apps/sling/xss/config.xml

  1. 为tel添加带有新regexp的协议:

<regexp name="telURL" value="tel:[0-9]+"/>

  1. telURL添加到锚点href属性的regexp-list中:

<regexp name="telURL"/>

  1. 在进行这些更改之后,还可能需要重新启动AEM实例。

在出现问题的情况下,您可以在这个博客页面和这个堆叠溢流柱上更多地了解它。

此外,链接检查机制可能仍然标记您的链接无效的编辑模式,并在发布时,它可以被删除。

如果您需要它来使其工作到应用程序中的一个或所有特定的锚或所有锚,您可以:

  • x-cq-linkchecker="skip"属性添加到锚中,正如i.net在帖子下面的注释中所建议的那样
  • 或者,如果您希望将tel添加到页面上任何可能的锚点,请在Day CQLinkCheckerService OSGI服务中添加异常tel: 特殊链接前缀。请注意,服务配置需要应用于所有作者和发布实例。
票数 0
EN

Stack Overflow用户

发布于 2017-07-28 11:59:10

我们已经按照您共享的引用链接进行了相同的操作,但是我们正在从对话框中传递"href“值。前href=“电话:${properties.propertyname}”。或者您可以尝试类似于href="${properties.propertyname}“,并从对话框"tel:123456789”中传递值。不知道这会不会对你有帮助。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45371683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档