Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aria live vs Angular material live播音员哪一个具有更好的兼容性和性能_Angular_Angular Material_Accessibility_Aria Live - Fatal编程技术网

Aria live vs Angular material live播音员哪一个具有更好的兼容性和性能

Aria live vs Angular material live播音员哪一个具有更好的兼容性和性能,angular,angular-material,accessibility,aria-live,Angular,Angular Material,Accessibility,Aria Live,我正在制作一个缩略图组件,需要公布每个缩略图的内容。这里有两个选项1使用[attr.aria live]=礼貌或使用角度材质a11y模块。不确定是否有更好的性能和支持更多的浏览器 基本上,当选择缩略图时,会宣布其内容 解决方案1: <thumbnail aria-live="polite" aria-atomic="true" [attr.aria-label]="selectObservable$ | async === currentThumbnailId ? currentThumb

我正在制作一个缩略图组件,需要公布每个缩略图的内容。这里有两个选项1使用[attr.aria live]=礼貌或使用角度材质a11y模块。不确定是否有更好的性能和支持更多的浏览器

基本上,当选择缩略图时,会宣布其内容

解决方案1:

<thumbnail aria-live="polite" aria-atomic="true" [attr.aria-label]="selectObservable$ | async === currentThumbnailId ? currentThumbnailId : ''"></thumbnail>
解决方案2:

// template
<thumbnail></thumbnail>

// component.ts
@component
class ThumbnailComponent({
   constructor(liveAnnouncer: LiveAnnouncer){
      selectObservable$.pipe(
          filter(selectId => selectId === currentThumbnailId)
       ).subscribe( currentThumbnailId => 
          this.liveAnnouncer.announce(currentThumbnailId);
       )
  } 
})

我通过在JAWS和NVDA中测试找到了答案。广播员是一个好办法。它创建了一个明显隐藏的“cdk live announcer element”,其属性为“aria live”和“aria atomic”,但将公告消息作为文本插入,而不是“aria label”,这使得它与大多数屏幕阅读器更兼容。此外,它还增加了100毫秒的延迟来处理一些屏幕阅读器