11

window.location.hash

使用链接进行 javascript 操作时,我通常会执行以下操作:

<a href="#">Link Text</a>

这样,当有人在页面加载之前单击链接时,不会发生任何可怕的事情。

Html 基本标签

在我当前的项目中,我使用相同的构造,但带有一个基本标记:

<html>
<head>
    <base href="http://example.com/" />
</head>
<body>
    <a href="#">Link Text</a>
</body>
</html>

但是,如果页面 url 是:

http://example.com/dir/page

单击链接导航到

http://example.com/#

而不是

http://example.com/dir/page#

我怎样才能解决这个问题?

4

7 回答 7

11

删除您的base标签或将您的href属性更改为完全合格。您正在观察的是basea元素混合时的预期行为。

于 2009-03-18T16:49:50.230 回答
3

如果您倾向于使用 a 标签,另一种解决方案是不使用 # 作为 href 目标(当您不指定时,它会导致跳转到页面顶部,我认为这是不受欢迎的)。你可以做的是:

<a href="javascript:">Some Link that Goes nowhere</a>

确实,除非您正在做一些需要成为标签的事情,否则跨度将是您最好的选择:

CSS:

.generic_link {
  text-decoration:underline;
}
.generic_link:hover {
  text-decoration:none;
}

HTML:

<span class="generic_link">Something that really isn't a link</span>
于 2009-03-18T17:38:56.120 回答
1

如果没有适合非 javascript 用户的 URL,则不要使用<a>. <a>标签用于链接到其他页面。

任何可见的 HTML 元素都可以有一个 onclick 并且不会有你描述的这个问题。

于 2009-03-18T16:51:33.457 回答
0

返回false事件onclick以禁用链接:

<a href="#" onclick="doSomething(); return false">Link Text</a>

(这只是你如何内联的一个例子。但尽量避免内联声明并使用渐进增强技术。)

于 2009-03-18T16:50:39.073 回答
0
<html>
<head>
    <base href="http://example.com/" />
</head>
<body>
    <a href="./dir/page#">Link Text</a>
</body>
</html>
于 2015-02-11T00:07:11.790 回答
0

我过去也有同样的问题。
我有一个我想为空的链接,以链接到当前页面。
如果没有基本的 html 元素,这将只是一个a带有href="#".

我的示例没有使用basehtml 元素,

<li>
    <a href="#"><div>The text of my Link</div></a>
</li>

与我找到的解决方案相同的示例,

<li style="cursor: pointer !important;">
    <a href="#" style="pointer-events: none;"><div>The text of my Link</div></a>
</li>

此解决方案仅使用 css 禁用链接。

使用第一个 css 规则cursor: pointer !important;,我确保此链接将具有正确的(对于我的情况)指针图标。
使用第二条规则pointer-events: none;,我确保此链接不可点击。您可以在此链接
之后找到有关此规则的更多信息。

于 2016-01-24T11:44:45.807 回答
-1

您可以简单地从标签中删除href属性。<a>

<a href="#"> => <a>
于 2017-12-30T02:33:51.927 回答