首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Sightly中保留null alt属性?

如何在Sightly中保留null alt属性?
EN

Stack Overflow用户
提问于 2017-03-09 06:42:52
回答 2查看 2.3K关注 0票数 1

我在一个符合AAA标准的ADA级网站上工作。出于可访问性的目的,如果图像没有语义值(背景模式等),则应该对alt属性alt=''使用空字符串,这样屏幕阅读器就不会向用户读取图像的长文件名。

我们在每个图片中内置了可授权的alt文本选项,但是Sightly/HTL的默认行为是删除任何导致空字符串的属性。

我尝试使用条件显式地回退到空字符串,但这没有帮助。

代码语言:javascript
复制
<img src="${properties.imgMobile}" alt="${properties.altText || ''}" />

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2017-03-09 07:47:57

其中一种方法是添加一个测试:

代码语言:javascript
复制
<div data-sly-test="${properties.altText}">
    <img src="${properties.imgMobile}" alt="${properties.altText}" />
</div>

当altText为非空时,上述条件将起作用。对于altText为null的情况,

代码语言:javascript
复制
<div data-sly-test="${!properties.altText}">
    <img src="${properties.imgMobile}" alt="" />
</div>

请注意,alt=""没有使用Sightly语法,因此它将被Sightly处理器忽略,并将作为alt=""出现,因为Sightly忽略空字符串文字。

根据Sightly Documentation

请注意,在最终标记中将删除其值为空字符串的属性(文字或通过data-sly- attribute设置)。此规则的一个例外是,将保留设置为文字空字符串的文字属性。

就我个人而言,我不认为这是最优雅的解决方案,但由于当前Sightly engine在剥离空值方面的局限性,这似乎是最有效的解决方案。

另一种选择是使用空数组:

代码语言:javascript
复制
<!--/* Like empty strings, empty arrays remove the attribute: */-->
<div title="${[]}"></div>
<!--/* outputs: */-->
<div></div>

<!--/* But an array containing just an empty string doesn't get removed: */-->
<div title="${['']}"></div>
<!--/* outputs: */-->
<div title=""></div>

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2017-11-18 02:41:47

上面的答案是一个明显的规范错误。参考:https://github.com/Adobe-Marketing-Cloud/htl-spec/issues/39

我的一个解决方案是,如果为空,则将可视值设为true,如下面的示例所示。

代码语言:javascript
复制
<img src="${properties.imgMobile}" alt="${properties.altText || true}"/>
output:
<img src="http://google.com" alt />
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42683332

复制
相关文章

相似问题

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