单击<a href="#" />时,IE始终重新加载整页

use*_*281 5 javascript asp.net internet-explorer

我在Internet Explorer上遇到了一个奇怪的错误(目前版本为8,但与7有相同的问题).点击以下链接时:

<a href="#">Hello</a> 
Run Code Online (Sandbox Code Playgroud)

无论如何,页面都完全重新加载.

但是这样的链接:

<a>Hello</a>
Run Code Online (Sandbox Code Playgroud)

将正常工作,而不是重新加载整个页面.

IE中是否存在某种可能导致此功能发生变化的设置?

信息:我已将安全设置设置为低,并已禁用所有插件以及"启用第三方插件 "选项.

任何建议都有帮助,谢谢.

编辑:这是我正在测试的

<a href="#" id="btnAddStuff" runat="server" onclick="displayAddStuff();" style="cursor:pointer;">
                <asp:Literal ID="litAddStuff" runat="server" Text="Add Stuff"  /></a>
Run Code Online (Sandbox Code Playgroud)

编辑#2:我已经用多个版本的IE测试了这个.干净的安装它可以正常工作.但是,在具有不同设置的随机用户计算机上进行测试会导致问题.

编辑#3:感谢您对如何使此代码更好的回复.虽然我很欣赏,但我的问题是,如果有人知道Internet Explorer中是否存在可配置的设置,这些设置会导致浏览器以不同的方式运行上述代码?

Eri*_*sky 2

如果您了解一点 javasript 和/或 jQuery,您可以这样做:

$("a[rel='prevDefault']").on('click', function(event){
    if($(this).attr("href").indexOf("#") > -1){
        event.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)

或者:

var anchorArray = document.getElementsByTagName("a"), I;
for(I=0;I<anchorArray.length;I++){
   anchorArray[I].click =  function(event){
      if(anchorArray[I].href.indexOf("#") > -1){
          event.preventDefault();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)