1

我当前的代码库使用以下函数来创建警报以通知盲人用户发生了某些事情,例如“Bob 已成功分配给蓝队”。

var create508Message = function (message, type) {
    var $messageElement,
        templateOptions = {
            message: message
        };

    // create the $messageElement
    switch (type){
        case 'alert':
            templateOptions.isAlert = true;
            $messageElement = $(HBS['common/accessibilityUtil'](templateOptions));
            break;
        case 'status':
            templateOptions.isStatus = true;
            $messageElement = $(HBS['common/accessibilityUtil'](templateOptions));
            break;
        default:
            return;
    }

    // trigger the message
    $('body').append($messageElement);
    // clean up automatically after 5 secs
    setTimeout(function (){
        $messageElement.remove();
    }, 5000);

},

大多数可重用组件会让盲人用户知道当前状态。我遇到了一些问题,例如,刷新一个表,读取页数,然后应用过滤器,页码发生变化,因为过滤列表中的项目数发生了变化。这会导致 Jaws 向盲人用户读取许多相互冲突的状态,因为它会读取整个警报队列。

我希望有一种方法可以防止它读取队列,例如:

killAriaLive: function () {
    $('div[aria-live]').map( function () {
            $(this).removeAttr('aria-live');
            $(this).removeAttr('role');
            $(this).attr('hidden', 'true');
            $(this).attr('aria-hidden', 'true');
    });
},

但这也不起作用,它仍然读取整个消息队列。

4

1 回答 1

0

您可以尝试使用带有空格的 aria-live="assertive" (请参阅https://developer.paciellogroup.com/blog/2014/03/screen-reader-support-aria-live-regions/ )创建/更新元素(虽然我还没有尝试过)但是,您可以开始抑制用户合法需要听到的语音。

于 2018-02-07T16:01:19.163 回答