在vb.net中使菜单项无法点击

时间:2015-10-01 11:21:34

标签: asp.net vb.net sitemap

其中一个站点地图节点定义为:

<siteMapNode title="Parent">
<siteMapNode url="~/Child1.aspx" title="Child1" />
<siteMapNode url="~/Child2.aspx" title="Child2" />
</siteMapNode>

要求是 - 节点&#34;父母&#34;不应该是可点击的。我们在Web用户控件 - menu.ascx文件中使用Sitemap。代码如下

<asp:Menu ID="Menu1" runat="server" BackColor="#7C6F57" DataSourceID="SiteMapDataSource1" Font-Bold="True" Font-Names="Verdana" Font-Size="0.8em"
    ForeColor="#F7F6F3" Height="1px" Orientation="Horizontal" StaticSubMenuIndent="10px" MaximumDynamicDisplayLevels="4" BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" StaticDisplayLevels="2">
    <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
    <DynamicHoverStyle BackColor="#F7F6F3" ForeColor="#7C6F57" />
    <DynamicMenuStyle BackColor="#7C6F57" BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" />
    <StaticSelectedStyle BackColor="#5D7B9D" Font-Size="Small" />
    <DynamicSelectedStyle BackColor="#5D7B9D" ForeColor="#FFFFC0" />
    <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
    <StaticHoverStyle BackColor="#7C6F57" ForeColor="White" />
</asp:Menu>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

制作&#34;家长&#34;节点不可点击我们没有为节点提供URL属性。但仍然是&#34;父母&#34;可以单击节点并导致404 - 找不到文件或目录。 该网址为http://localhost:2550/%23

在menu.ascx中添加了以下JavaScript代码,使节点无法点击。

<script type="text/javascript">  
    window.onload = function () {
        var menuTable = document.getElementById("<%=Menu1.ClientID%>");
        var menuLinks = menuTable.getElementsByTagName("a");      
        for (i = 0; i < menuLinks.length; i++) {
            if (menuLinks[i].nameProp == "%23") {
                menuLinks[i].onclick = function () { return false; }
            }
        }
    }
</script>

此方法在IE8中运行良好,但问题仍然存在于Chrome浏览器中。

请建议还有什么方法可以让父母&#34;节点无法点击。

1 个答案:

答案 0 :(得分:0)

现代浏览器更喜欢调用事件上的e.preventDefault(),只需更改您的函数即可按以下方式执行此操作

&#13;
&#13;
function runMe() {
  var menuLinks = document.getElementById('menu').getElementsByTagName('a'),
    i, len, handler = window.attachEvent || window.addEventListener,
    ev_prefix = window.attachEvent ? 'on' : '';
  for (i = 0, len = menuLinks.length; i < len; i++) {
    if (menuLinks[i].name === '#') {
      handler.call(menuLinks[i], ev_prefix + 'click', function(e) {
        if (e === undefined) {
          e = window.event;
        }
        if (e && e.preventDefault) {
          e.preventDefault();
        }
        return false;
      });
    }
  }
}

runMe();
&#13;
<div id="menu">
  <a href="./">Working</a>
  <a href="./" name="%23">Not working</a>
</div>
&#13;
&#13;
&#13;