【发布时间】:2018-02-20 21:08:33
【问题描述】:
我对 ARIA 及其屏幕阅读器的功能相当陌生,但我一直在试图弄清楚为什么没有阅读弹出窗口。当用户单击保存按钮刷新将显示消息的页面但屏幕阅读器没有接收到消息中的更改时,它会发生变化。
从我读到的 aria-live="assertive" 和 role="alert" 应该可以工作
我尝试了标签和 aria 属性的各种位置,但没有运气。只有当我重新单击主要内容部分时,它才会读取警报。
我在 IE11 和 Chrome 上测试过(虽然它真的只需要在 IE 上工作)
仅供参考,原来所有的
都是
--主布局
<div class="body-content" style="padding: 4px 0">
<a id="main_content" tabindex="-1" name="main_content"></a>
<!-- <h1>Main Content</h1> -->
<!-- <p>This is the main content area. -->
<tiles:insertAttribute name="body" />
</div>
--在每个屏幕上包含消息
<jsp:include page="messages.jsp" />
--messages.jsp
div id="errorDiv" aria-live="assertive" class="error" role="alert">
<c:if test="${not empty errors}">
<c:set var="popupErr" value=""/>
<c:forEach var="error" items="${errors}">
<p > ${error}</p>
<br />
<c:if test="${popupErr != ''}">
<c:set var="popupErr">
<p > ${popupErr}</p>
<c:out value="${popupErr}" escapeXml="false" />\r\n
</c:set>
</c:if>
<c:set var="popupErr" >
<p> ${error}</p>
<c:out value="${popupErr}" escapeXml="false"/><c:out value="${error}" escapeXml="false" />
</c:set>
</c:forEach>
<c:remove var="errors" scope="session"/>
</c:if>
</div>
<div id="msgDiv" class="message" aria-live="assertive" role="alert">
<c:if test="${not empty message}">
<c:set var="popupMsg" value=""/>
<c:forEach var="msg" items="${message}">
<p > ${msg}</p>
<br />
<c:if test="${popupMsg != ''}">
<c:set var="popupMsg">
<p > ${popupMsg}</p>
<c:out value="${popupMsg}" escapeXml="false"/>\r\n
</c:set>
</c:if>
<c:set var="popupMsg">
<p > ${popupMsg}</p>
<c:out value="${popupMsg}" escapeXml="false"/><c:out value="${msg}" escapeXml="false"/>
</c:set>
</c:forEach>
<c:remove var="message" scope="session"/>
</c:if>
</div>
编辑:
这更多的是页面在保存点击后刷新后没有被重新读取的问题
【问题讨论】:
标签: html jsp wai-aria screen-readers jaws-screen-reader