【问题标题】:hash link reloads page哈希链接重新加载页面
【发布时间】:2012-06-23 02:55:40
【问题描述】:

我有一个安装在第三方网站上的代码 sn-p。我无法详细说明,但它通过使用<script> 标记将 HTML、CSS 和 JS 加载到页面上。

部分代码是点击此链接时执行的JS函数:

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

如果页面上存在阻止函数执行的 JS 错误,单击链接显然只是将哈希添加到 URL 并将用户带到页面顶部。这是预期的回退行为。

但是,在一个存在大量 JS 错误的第三方网站上,单击该链接会删除顶级域之后的所有内容,添加哈希并指向该页面(主页)。例如,该链接会将用户从:

http://www.example.com/2010/05/14/very-interesting-blog-post/

http://www.example.com/#

值得注意的是,该问题出现在 Firefox 和 Chrome 中,而不是 IE9。我知道如果没有更详细的代码可能无法正确诊断问题,但我无权提供它。我只是希望对这种奇怪的浏览器行为得到某种合理的解释。

如果有帮助的话,该网站就是一个 WordPress 博客。提前致谢。

编辑:这显然不是由网站上的任何 JS 引起的,因为关闭 JS 并添加与检查器的链接会产生相同的行为。

【问题讨论】:

  • 关闭所有javascript并尝试一下。
  • 感谢您的建议。我在两个浏览器中都这样做了,并且行为保持不变。
  • 好的,那么你知道这与javascript无关。我会从您的帖子中删除这些点并将“javascript”重新标记为“html”。您可以点击edit 澄清您的帖子。
  • 如果禁用 JavaScript 时该链接永远不应该做任何事情,那么为什么不使用另一个元素而不是链接呢?您需要在其上设置tabindex=0,以便使用键盘导航的人仍然可以关注它。或者甚至更好地使用 JavaScript 插入链接,这样禁用它的用户就不会看到什么都不做的链接。
  • 感谢大家的有益见解。我会试试上面的,让你知道。 @WesleyMurch,我会相应地重新标记帖子。

标签: html hash browser-bugs


【解决方案1】:

当您使用 windows.onpopstate 处理后退或前进按钮并使用 ajax 加载页面时,会发生此问题。尝试解决你的处理历史的js代码。

【讨论】:

    【解决方案2】:

    我有一个类似的错误,点击任何&lt;a href="#"&gt; 会导致整个页面重新加载。我设法通过从页面的&lt;head&gt; 中删除&lt;base href="/"&gt; 标记来解决这个问题。我(还)找不到任何有关此的信息。如果我能找到任何其他信息,我会添加更多内容。

    【讨论】:

    • 谢谢。您可能只是为我节省了大量时间。
    • 快速(但 hackish,具有未知的可访问性影响)解决方法:&lt;a href="#hash" onclick="arguments[0].preventDefault(); window.location.hash = '#hash';"&gt;...&lt;/a&gt;
    猜你喜欢
    • 2013-06-20
    • 2011-12-15
    • 2015-11-08
    • 1970-01-01
    • 2016-10-28
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    相关资源
    最近更新 更多