【发布时间】:2022-02-19 05:01:09
【问题描述】:
我有一个非常复杂的 html 页面,我在不同的地方添加了一些书签锚点。锚点如下所示:
<a href="#foo bar">click here for foo bar</a>
lorum ipsum etc
<a name="foo bar">foo bar</a>
但是当你点击它们时,什么都没有发生——地址栏中的 url 没有改变,页面也没有移动。
如果我将锚点取出并将它们放入一个更简单的页面,它们就会开始工作,所以我认为某些东西一定会以某种方式干扰导航,但我想不出如何确定它。我想知道某处取消导航的 javascript 错误,但该页面有数千行 javascript,我还没有发现任何可疑之处。
Chrome 和 Firefox 都会出现此问题。
如何调试这个问题?
更新:这可能是 CSS 问题吗?目标锚点位于<div> 内,CSS 属性为overflow:auto;。这导致滚动条出现在 div 内,而不是页面的边缘 - 这不是我的简单文本页面的情况。
更新 2:溢出:自动不会破坏命名锚; tested with a simple example
【问题讨论】:
-
书签中是否允许有空格?
-
我会首先寻找阻止点击事件传播或阻止默认操作的 JavaScript。如果你使用 jQuery,api.jquery.com/event.stopPropagation 和 api.jquery.com/event.preventDefault
-
@sjums 我尝试将书签复制到一个简单的测试页面,并且它们可以很好地处理空格。不过我还是会尝试一下——此时任何事情都值得尝试。
-
@j08691 在大多数情况下,只需
return false;在事件处理程序的某个位置。我也怀疑。尝试先禁用 Javascript,看看它们是否有效。 -
@bazmegakapa 不幸的是,页面的整个部分都是通过 ajax 加载的,所以如果没有 javascript 就不容易测试 - 将有问题的部分拉到一个简单的测试页面中并没有重现问题。