将 sr-only 文本应用于可变可见的 asp:LinkButtons 的正确方法是什么?
What is the correct way to apply sr-only text to asp:LinkButtons that are variably visible?
我正在努力使我的代码更容易被 screen-readers 访问,我遇到过这种情况,但一直找不到解决办法。当按钮仅在满足条件时可见时,您如何正确应用 sr-only 文本?我想避免屏幕-reader 在按钮不可见时读取文本,因为那时按钮将不提供任何功能。
当分页可用时按钮可见(下一页和上一页视情况而定)。
请看附件代码。
<div id="divPager" runat="server" class="gutter-bottom text-center">
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" RenderMode="Inline">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="ServerClick" />
</Triggers>
<ContentTemplate>
<ul class="pager">
<li>
<asp:LinkButton runat="server" ID="btnPrev" Visible="False" CommandName="PrevPage">
<i class="fa fa-arrow-left"></i> Prev
</asp:LinkButton>
</li>
<li>
<asp:LinkButton runat="server" ID="btnNext" Visible="False" CommandName="NextPage">
Next <i class="fa fa-arrow-right"></i>
</asp:LinkButton>
</li>
</ul>
</ContentTemplate>
</asp:UpdatePanel>
</div>
我考虑过的一件事是在 asp:LinkButton(s) 中放置一个跨度,并从代码隐藏中有条件地添加 class="sr-only" 和适当的跨度文本。我在正确的轨道上吗?有没有更好的办法?感谢您的输入
我正在发布我当前对此问题的解决方案。我绝不认为这是最好的解决方案,如果您花时间向我展示更好的方法,我将不胜感激。 这是我在我的 aspx 页面上所做的:
<ul class="pager">
<li>
<asp:LinkButton runat="server" ID="btnPrev" Visible="False" CommandName="PrevPage">
<span id="btnPrevSR" runat="server" class="sr-only"></span>
<i class="fa fa-arrow-left"></i> Prev
</asp:LinkButton>
</li>
<li>
<asp:LinkButton runat="server" ID="btnNext" Visible="False" CommandName="NextPage">
<span id="btnNextSR" runat="server" class="sr-only"></span>
<i class="fa fa-arrow-right"></i> Next
</asp:LinkButton>
</li>
</ul>
而在我后面的代码中
If btnPrev.Visible = True Then
btnPrevSR.InnerHtml = "Previous Page of Announcements"
End If
If btnNext.Visible = True Then
btnNextSR.InnerHtml = "Next Page of Announcements"
End If
下面是这段代码生成后的样子。注意空 <li>
因为 btnPrev
的 visible 设置为 false
<ul class="pager">
<li>
</li>
<li>
<a id="ctl00_ctl00_cpContent_cpContent_btnNext" href="javascript:__doPostBack('ctl00$ctl00$cpContent$cpContent$btnNext','')"><span id="ctl00_ctl00_cpContent_cpContent_btnNextSR" class="sr-only">Next Page of Announcements</span>
<i class="fa fa-arrow-right"></i> Next
</a>
</li>
</ul>
我正在努力使我的代码更容易被 screen-readers 访问,我遇到过这种情况,但一直找不到解决办法。当按钮仅在满足条件时可见时,您如何正确应用 sr-only 文本?我想避免屏幕-reader 在按钮不可见时读取文本,因为那时按钮将不提供任何功能。
当分页可用时按钮可见(下一页和上一页视情况而定)。 请看附件代码。
<div id="divPager" runat="server" class="gutter-bottom text-center">
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" RenderMode="Inline">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="ServerClick" />
</Triggers>
<ContentTemplate>
<ul class="pager">
<li>
<asp:LinkButton runat="server" ID="btnPrev" Visible="False" CommandName="PrevPage">
<i class="fa fa-arrow-left"></i> Prev
</asp:LinkButton>
</li>
<li>
<asp:LinkButton runat="server" ID="btnNext" Visible="False" CommandName="NextPage">
Next <i class="fa fa-arrow-right"></i>
</asp:LinkButton>
</li>
</ul>
</ContentTemplate>
</asp:UpdatePanel>
</div>
我考虑过的一件事是在 asp:LinkButton(s) 中放置一个跨度,并从代码隐藏中有条件地添加 class="sr-only" 和适当的跨度文本。我在正确的轨道上吗?有没有更好的办法?感谢您的输入
我正在发布我当前对此问题的解决方案。我绝不认为这是最好的解决方案,如果您花时间向我展示更好的方法,我将不胜感激。 这是我在我的 aspx 页面上所做的:
<ul class="pager">
<li>
<asp:LinkButton runat="server" ID="btnPrev" Visible="False" CommandName="PrevPage">
<span id="btnPrevSR" runat="server" class="sr-only"></span>
<i class="fa fa-arrow-left"></i> Prev
</asp:LinkButton>
</li>
<li>
<asp:LinkButton runat="server" ID="btnNext" Visible="False" CommandName="NextPage">
<span id="btnNextSR" runat="server" class="sr-only"></span>
<i class="fa fa-arrow-right"></i> Next
</asp:LinkButton>
</li>
</ul>
而在我后面的代码中
If btnPrev.Visible = True Then
btnPrevSR.InnerHtml = "Previous Page of Announcements"
End If
If btnNext.Visible = True Then
btnNextSR.InnerHtml = "Next Page of Announcements"
End If
下面是这段代码生成后的样子。注意空 <li>
因为 btnPrev
<ul class="pager">
<li>
</li>
<li>
<a id="ctl00_ctl00_cpContent_cpContent_btnNext" href="javascript:__doPostBack('ctl00$ctl00$cpContent$cpContent$btnNext','')"><span id="ctl00_ctl00_cpContent_cpContent_btnNextSR" class="sr-only">Next Page of Announcements</span>
<i class="fa fa-arrow-right"></i> Next
</a>
</li>
</ul>