我正在使用AEM 6.1 SP2,我正在尝试在锚标记的href中启用'tel'属性,以使点击呼叫功能起作用。我已经添加了'htmlRules'节点 并在htmlRules节点下链接节点,其中'protocols'属性为[http://,https://,ftp://,tel:,mailto:,file://]
链接中指定的rte.js中的'validateHref'函数确实读取'protocols'属性并将'tel'属性验证为有效,但不确定为什么'tel'属性在单击'ok'时不会在标记中保留在作者对话框中。
这是锚标记 -
<a style="color: #6c6c6c; text-decoration: underline;" class="tel" href="tel:1234 567 891">1234 567 89</a>
这就是它在页面上呈现为标记的方式 -
<a style="color: rgb(108,108,108);text-decoration: underline;" class="tel">1234 567 89</a>
这是'htmlRules'节点xml -
<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>
答案 0 :(得分:1)
修复后将xssprotection配置文件覆盖在 -
/libs/cq/xssprotection/config.xml
到
/apps/cq/xssprotection/config.xml
并添加&#39; tel&#39;正则表达式列表中的属性
<regexp name="telURL" value="tel:[0-9]+"/>
<attribute name="href">
<regexp-list>
<regexp name="onsiteURL"/>
<regexp name="offsiteURL"/>
<regexp name="telURL"/>
</regexp-list>
</attribute>
这已在
的博客中描述虽然在博客和其他地方已经提到
Rendering telephone links in HTL based on input from a Rich Text widget
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。我正在使用aem 6.1 SP2。 AEM的神秘方式
答案 1 :(得分:0)
您在问题中链接的解决方案似乎不适用于最新版本的AEM。
现在负责从href
开始删除tel
的机制是HTL XSS保护,它在写入之前扫描属性。避免这种情况的最简单方法是在Rich Text组件中禁用它:${properties.text @ context='unsafe'}
。这不是最安全的解决方案,相反,最好通过以下步骤扩展XSS保护配置:
/libs/cq/xssprotection/config.xml
- &gt; /apps/cq/xssprotection/config.xml
/libs/sling/xss/config.xml
- &gt; /apps/sling/xss/config.xml
<regexp name="telURL" value="tel:[0-9]+"/>
telURL
添加到regexp-list
锚href
属性的<regexp name="telURL"/>
: x-cq-linkchecker="skip"
如果出现问题,您可以在this blog page和此Stackoverflow post上详细了解相关信息。
此外,链接检查器机制仍可能在编辑模式下将您的链接标记为无效,并且在发布时,它可以被删除。
根据您是否需要它使其适用于您应用中的一个或所有特定锚点或所有锚点,您可以:
tel
属性添加到您的主播,正如i.net在帖子tel:
添加到网页上的任何可能的锚点,请在日CQ链接检查服务中添加例外/entitled-attribs
特殊链接前缀 OSGI服务。请注意,然后需要在所有作者和发布实例上应用服务配置。答案 2 :(得分:0)
我们按照你分享的参考链接做了同样的事情,但我们正在传递&#34; href&#34;对话框中的值。 ex href =&#34; tel:$ {properties.propertyname}&#34;。 或者您可以尝试像href =&#34; $ {properties.propertyname}&#34;并传递对话框中的值&#34; tel:123456789&#34;。 不确定这是否会对你有所帮助。 感谢。