其中一个站点地图节点定义为:
<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;节点无法点击。
答案 0 :(得分:0)
现代浏览器更喜欢调用事件上的e.preventDefault(),只需更改您的函数即可按以下方式执行此操作
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;