我正在开发基于.NET MenuItems的sidenav,如下所示:
<asp:MenuItem value="19" Text="Profile" Selectable="false"></asp:MenuItem>
<asp:MenuItem value="0" Text="Overview" ToolTip="Overview" Selected="true"></asp:MenuItem>
<asp:MenuItem value="2" Text="My Info & Email Subscriptions" ToolTip="My Info & Email Subscriptions"></asp:MenuItem>
在HTML中,输出在每个MenuItem周围生成一系列嵌套表,如下所示:
<div id="_links" class="span-3">
<table id="FormUserControl__tabMenu" cellpadding="0" cellspacing="0" border="0" style="clear:left;">
<tbody>
<tr id="FormUserControl__tabMenun0">
<td>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td style="white-space:nowrap;width:100%;">
<a style="text-decoration:none;">
<div id="FormUserControl__tabMenu_ctl00__tabMenuItemPanel" class="myAccountHeading ">
Profile
</div>
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(this)" title="Overview" id="FormUserControl__tabMenun1">
<td>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td style="white-space:nowrap;width:100%;"><a href="javascript:__doPostBack('FormUserControl$_tabMenu','0')" style="text-decoration:none;">
<div id="FormUserControl__tabMenu_ctl01__tabMenuItemPanel" class="sideNav">
Overview
</div>
</td>
<tr>
<tbody>
</td>
</tr>
</tbody>
</table>
</div>
如何在这些最里面的div中添加辅助功能角色和咏叹调级别?目标是实现可访问性合规性。例如:
<div role="heading" aria-level="[2]">Profile</div>
我查看了MSDN文档,看起来没有办法在初始的MenuItem声明中添加这些属性。
我还尝试在CSS中添加role
和aria-level
属性,我知道这很糟糕,但我认为可以设置content
,这值得尝试。这不起作用。
我可以在JavaScript中轻松做到这一点,但我真的想避免涉及到它,它是最后的手段,我知道如何做到这一点。
有没有办法将MenuItem输出更改为涉及角色和咏叹调级别?或者,有没有办法让它输出一个标题而不是嵌套在两个表中的div?
非常感谢!