在2个单独的Web应用程序中,一个使用带有vs2008的asp.net 3.5和带有vs2010的4.0,asp.net菜单的子菜单项仅在android浏览器上消失。当点击主菜单项时,孩子会闪烁一瞬间然后消失。
菜单的编辑版本如下:
<asp:Menu ID="MainMenuEmp" runat="server" CssClass="menuASP" Orientation="Horizontal" DynamicHorizontalOffset="0"
StaticDisplayLevels="1" StaticEnableDefaultPopOutImage="false" DynamicVerticalOffset="1" visible="false"
>
<StaticMenuitemStyle CssClass="menuitemASPStatic" />
<StaticHoverStyle CssClass="menuASPStaticHover" />
<StaticSelectedStyle CssClass="menuASPStaticHover" />
<DynamicMenuStyle CssClass="menuASPDynamicMenuStyle" />
<DynamicMenuitemStyle CssClass="menuitemASPDynamic" />
<DynamicHoverStyle CssClass="menuASPDynamicHover" />
<DynamicSelectedStyle CssClass="menuASPDynamicHover" />
<Items>
<asp:MenuItem Text="HISTORY" Value="@" navigateurl="~/clientpages/jobhistory.aspx" />
<asp:MenuItem Text="NEW ORDER" Value="@" navigateurl="~/clientpages/newjob.aspx" />
<asp:MenuItem Text="CLIENT INFO" Value="@" navigateurl="~/clientpages/clientinfo.aspx" />
<asp:MenuItem Text="MGMT" Value="@" Selectable="false" >
<asp:MenuItem Text="Inspections" Value="@" navigateurl="~/clientpages/MgrInspection.aspx" />
<asp:MenuItem Text="Tasks" Value="@" navigateurl="~/clientpages/MgrInspectionStatus.aspx"/>
<asp:MenuItem Text="Last Vehicle Inspection" Value="@" navigateurl="~/clientpages/MgrInspectionVehicle.aspx"/>
</asp:MenuItem >
<asp:MenuItem Text="JOB MGMT" Value="@" navigateurl="~/clientpages/jobdailyview.aspx"/>
</Items>
</asp:Menu>
部分css如下:(需要z-index才能让子菜单显示在其他浏览器上)。
.menuASPDynamicMenuStyle
{
z-index: 999; /*padding: 4px 0 3px 0;*/
padding: 0;
margin-top: 1px;
background-color: #F8F8F8;
}
菜单位于主页上,页面上有toolscriptmanager。
以下代码位于masterpage的init事件中:
If Request.ServerVariables("http_user_agent").IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) <> -1 Then
Page.ClientTarget = "uplevel"
End If
这也是让儿童菜单在其他浏览器上显示的必要条件。我试过了:
page.clienttarget = "uplevel"
没有条件,但是,这不起作用。
我也试过添加一个Android浏览器文件,但是,这不起作用。
我已经在网上搜了几天了。有几个类似的问题,但没有答案。有没有人有同样的问题?菜单工作正常,例如,chrome,ff,safari,ipad,但是,不是在Android移动设备上而不是在Android平板电脑上。
答案 0 :(得分:0)
Android上没有悬停,但是如果我按住父菜单,我的asp菜单就可以了。可悲的是,当我按住它时,我也会得到浏览器菜单。您必须设计一个菜单,只需单击即可打开子项。使用asp菜单无法做到这一点。
答案 1 :(得分:0)
菜单没有消失,但页面正在回发..
只需将navigateUrl属性设置为&#39; javascript:return false&#39;
答案 2 :(得分:0)
我找到了解决这个问题的方法。
要么
document.body.setAttribute('onclick', 'setTimeout(function () { }, 0);');
在启动脚本中
或让身体标签看起来像这样
<body onclick="setTimeout(function () { }, 0);">
然后它适用于Android。我还没有在其他iPhone上测试过。
(我还尝试了一些更常规的方法来添加这个虚拟脚本,但它没有用。)