哈希链接重新加载页面

3

我有一段安装在第三方网站上的代码片段。不能透露太多细节,但它通过使用 <script> 标签将HTML、CSS和JS加载到页面上。

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

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

如果页面上存在JS错误,阻止函数执行,那么点击链接显然只会将哈希添加到URL中并将用户带到页面顶部。这是预期的后备行为。
然而,在一个有大量JS错误的第三方网站上,点击链接会删除顶级域名后面的所有内容,添加哈希并指向该页面(主页)。例如,该链接将把用户从以下位置带到:
http://www.example.com/2010/05/14/very-interesting-blog-post/

to

http://www.example.com/#

值得注意的是,该问题出现在Firefox和Chrome中,但不会在IE9中出现。我知道如果没有更详细的代码可能很难正确诊断此问题,但我无法提供更多信息。我只希望能够得到一些对这种奇怪的浏览器行为合理的解释。
如果有帮助的话,涉及的站点是一个WordPress博客。谢谢您的帮助。
编辑:显然这不是由站点上的任何JS引起的,因为关闭JS并使用检查器添加链接会产生相同的行为。

关闭所有的 JavaScript 并尝试。 - undefined
谢谢你的建议。我在两个浏览器中都尝试了,但行为仍然保持不变。 - undefined
好的,那么你知道这与JavaScript无关。我会从你的帖子中删除那些点,并将“javascript”重新标记为“html”。你可以点击[编辑]来澄清你的帖子。 - undefined
如果该链接在禁用JavaScript时不需要执行任何操作,为什么不使用其他元素而不是链接?您可以在其上设置 tabindex=0,以便使用键盘导航的人仍然可以将焦点放在它上面。或者更好的做法是使用JavaScript插入链接,这样禁用了JavaScript的用户就不会看到一个无效的链接。 - undefined
谢谢大家给予的有益见解。我会尝试上述方法并告诉你们结果。@WesleyMurch,我会相应地重新标记这篇帖子。 - undefined
更新:我们已经更新了代码,使链接不再使用哈希,而是作为备用链接到一个网站。所以问题已经解决,但是问题仍然没有得到答复。@steveax,所有的代码都是通过JS插入的,所以很少数没有启用JS的用户看不到任何代码。备用链接对于有JS错误的网站是必要的。 - undefined
2个回答

4

我曾经遇到一个类似的错误,点击任何一个<a href="#">都会导致整个页面重新加载。我通过从页面的<head>中删除<base href="/">标签来解决了这个问题。我还没有找到任何关于这个问题的信息。如果我能找到更多的信息,我会进行更新。


谢谢。你可能刚刚为我节省了大量的时间。 - undefined
1
关于这个行为的信息:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/base#Anchor_elements - undefined
快速(但是粗糙,对可访问性影响未知)的临时解决方案:<a href="#hash" onclick="arguments[0].preventDefault(); window.location.hash = '#hash';">...</a> - undefined

1
这个问题发生在你使用windows.onpopstate来处理浏览器的后退或前进按钮,并且使用ajax加载页面时。尝试解决你的JavaScript代码,以便正确处理历史记录。

是的,谢谢!这正是我的代码出现的问题! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接