【问题标题】:IE Always Reloads Entire Page when <a href="#" /> is Clicked单击 <a href="#" /> 时,IE 总是重新加载整个页面
【发布时间】:2012-01-26 17:25:24
【问题描述】:

我在使用 Internet Explorer 时遇到了一个奇怪的错误(当前版本为 8,但与 7 有相同的问题)。单击链接时,例如:

<a href="#">Hello</a> 

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

但是像这样的链接:

<a>Hello</a>

会正常工作,不会重新加载整个页面。

IE 中是否有某种设置会导致此功能发生变化?

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

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

编辑:这是我正在测试的内容

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

编辑#2:我已经用多个版本的 IE 对此进行了测试。通过全新安装,它可以正常工作。但是,在具有不同设置的随机用户机器上进行测试会导致问题。

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

【问题讨论】:

  • 您介意编辑您的帖子以使链接显示为代码块吗?我不能为你做这件事,因为编辑太小而无法处理。 4 个空格缩进创建代码块。如果我的解释不清楚,您可以查看问题编辑器上的帮助面板。
  • 谢谢,这将增加您获得所需答案的机会。

标签: javascript asp.net internet-explorer


【解决方案1】:

如果你懂一点 javasript 或 jQuery,你可以这样做:

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

或:

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();
      }
   }
}

【讨论】:

  • 虽然我永远无法找到导致此人的 IE 导致这些问题的原因,但我能够使用此处给出的一些类似代码来删除所有 href="#" 属性,所以它会为他们工作。我仍然很好奇一个 IE 安装是如何做到这一点的,而其他人不会这样做。但无论哪种方式,这个解决方案似乎都有效,干杯。
  • @user1048281 这来自不同的操作系统和不同的内核,即使在相同的操作系统上,不同的更新版本也会根据您所面临的问题而采取完全不同的方式。 IE 喜欢为用户和程序员考虑更多的问题,并且有一些缺点,你必须为其编写验收。
【解决方案2】:

请发布您的代码。

我认为你指的是“JUMP”

Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

What's the effect of adding 'return false' to a click event listener?

我认为这些线程会更有用。标记为删除???

【讨论】:

  • 我已经测试了我的代码并让它在多个浏览器中运行。此错误仅在一个特定用户的机器上发生。我应该在最初的问题中发布。这就是为什么我认为它与 IE 设置有关。
【解决方案3】:

您是否在head 中设置了base 元素?这是一个标准的原因。

使用 JavaScript 可以帮助您克服这些困难。大致如下:

<a href="javascript:;" onclick="document.location.hash='#' />Hello</a>

应该照顾它。或者你也可以让它返回 false 。取决于你想要做什么。

【讨论】:

  • 没有基本元素没有被设置。
  • 发布您的代码可以帮助您获得更好的答案。根据您所说的,我只能从导致您描述的行为的最常见问题中猜测。
猜你喜欢
  • 2011-09-12
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 2017-04-11
  • 2017-11-29
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多