Javascript 带有Html基标记的Url哈希 window.location.hash
当使用javascript操作的链接时,我通常会执行以下操作:Javascript 带有Html基标记的Url哈希 window.location.hash,javascript,html,hash,base-tag,Javascript,Html,Hash,Base Tag,当使用javascript操作的链接时,我通常会执行以下操作: <a href="#">Link Text</a> 单击链接将导航到 http://example.com/# 而不是 http://example.com/dir/page# 如何修复此问题?请删除您的base标记,或者将您的href属性更改为完全限定。当您将base与a元素混合时,您观察到的是预期的行为。在onclick事件上返回false以禁用链接: <a href="#
<a href="#">Link Text</a>
单击链接将导航到
http://example.com/#
而不是
http://example.com/dir/page#
如何修复此问题?请删除您的
base
标记,或者将您的href
属性更改为完全限定。当您将base
与a
元素混合时,您观察到的是预期的行为。在onclick
事件上返回false
以禁用链接:
<a href="#" onclick="doSomething(); return false">Link Text</a>
(这只是一个内联操作的示例。但是尽量避免内联声明和使用的技术。)如果没有适合非javascript用户的URL,那么不要使用
<代码>标记用于指向其他页面的链接
任何可见的HTML元素都可以有onclick,不会出现您描述的问题。如果您倾向于使用a标记,另一种解决方案是不使用#作为href目标(如果您不指定a标记,则会导致跳转到页面顶部,我认为这是不可取的)。您可以做的是:
<a href="javascript:">Some Link that Goes nowhere</a>
HTML:
真正不是链接的东西
我过去也遇到过同样的问题。
我有一个链接希望为空,以链接到当前页面。
如果没有,这将只是一个
元素,带有href=“#”
我的示例没有使用base
html元素
<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!重要的代码>我确保此链接具有正确的(针对我的情况)指针图标。
使用第二条规则指针事件:无代码>我确保此链接不可单击。
您可以在下面找到有关此规则的更多信息。您只需从
标记中删除href
属性即可
<a href="#"> => <a>
=>
OP指定“这样,当有人在页面加载之前单击链接时,不会发生可怕的事情”,这表明onclick处理程序尚未连接。内联javascript很难看,编辑后应该避免,这是渐进式增强造成的问题。问题是用户在添加额外的单击处理程序之前单击了“链接”。在这种情况下,没有办法避免链接导航。解决方案是使其不是一个链接,或者,当然,使其成为一个具有等效非javascript操作的链接。根据行动的不同,这可能是最好的解决方案。不要使用“foo.com”。见rfc 2606:我支持这项动议。如果它实际上不在任何地方,请使用a或其他非a的东西。但这对键盘用户有负面影响:现在你无法聚焦元素。使用/here有一个理由。同样的道理也适用于iOS上的移动用户。只有带有href属性的
才会触发onclick,至少在我使用过的iOS版本中是这样。+1 Brad,您正在尝试解决一个不需要存在的问题。你真的需要使用base标签吗?参见Gumbo的评论,点击处理程序返回false会停止链接。javascript:通常最好避免使用URL。
<span class="generic_link">Something that really isn't a link</span>
<html>
<head>
<base href="http://example.com/" />
</head>
<body>
<a href="./dir/page#">Link Text</a>
</body>
</html>
<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>
<a href="#"> => <a>