Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
Html aria live=";自信的;角色=";“警惕”;不适用于弹出消息_Html_Jsp_Wai Aria_Screen Readers_Jaws Screen Reader - Fatal编程技术网

Html aria live=";自信的;角色=";“警惕”;不适用于弹出消息

Html aria live=";自信的;角色=";“警惕”;不适用于弹出消息,html,jsp,wai-aria,screen-readers,jaws-screen-reader,Html,Jsp,Wai Aria,Screen Readers,Jaws Screen Reader,我对ARIA及其屏幕阅读器的功能相当陌生,但我一直在试图弄清楚为什么没有读取弹出窗口。当用户单击“保存”按钮,刷新将显示消息的页面时,屏幕阅读器不会接收到消息中的更改,但该按钮会被更改 从我所读到的内容来看,aria live=“assertive”和role=“alert”都应该有效 我尝试了各种位置的标签和咏叹调属性没有运气。只有当我重新单击主内容部分时,它才会读取警报 我已经在IE11和Chrome上进行了测试(尽管它实际上只需要在IE上工作) FYI最初所有均 --主布局 <div

我对ARIA及其屏幕阅读器的功能相当陌生,但我一直在试图弄清楚为什么没有读取弹出窗口。当用户单击“保存”按钮,刷新将显示消息的页面时,屏幕阅读器不会接收到消息中的更改,但该按钮会被更改

从我所读到的内容来看,aria live=“assertive”和role=“alert”都应该有效

我尝试了各种位置的标签和咏叹调属性没有运气。只有当我重新单击主内容部分时,它才会读取警报

我已经在IE11和Chrome上进行了测试(尽管它实际上只需要在IE上工作)

FYI最初所有均

--主布局

<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

${error}


${popupErr}

\r\n ${error}

${msg}


${popupMsg}

\r\n ${popupMsg}

编辑:


这更多的是一个问题,页面在单击“保存”按钮后刷新后,不会被重新读取该问题。该问题已过时,但如果其他人(如我)无意中发现该问题,请执行以下操作:

您的应用程序似乎是在服务器端呈现的,因此就浏览器而言是静态的(运行时更改DOM不涉及JS)。我认为以下解释了为什么这不会导致屏幕阅读器发布消息:

辅助技术将宣布直播区域内容的动态变化。必须首先显示活动区域(通常为空),以便浏览器和辅助技术能够识别该区域。随后将宣布任何后续更改。

只要在加载时在初始标记中包含aria live属性或专门的live region角色(例如role=“alert”),将不会产生任何效果

或从其他来源:

大多数屏幕阅读器会自动宣布动态呈现的警报,在某些操作系统中,它们可能会触发警报声音。需要注意的是,此时,屏幕阅读器不会在页面加载完成之前通知用户页面上出现的警报。

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>