我在谷歌上查询时发现他们在锚标签中使用onclick事件。
在谷歌页眉的更多选项中,它看起来像是普通的a标签,但点击它不会重定向而是打开一个菜单。通常当使用
<a href='more.php' onclick='show_more_menu()'>More >>></a>
通常情况下,它会跳转到'more.php'页面且不触发show_more_menu()
函数,但我在该页面上显示了一个菜单。如何像谷歌一样实现呢?
我在谷歌上查询时发现他们在锚标签中使用onclick事件。
在谷歌页眉的更多选项中,它看起来像是普通的a标签,但点击它不会重定向而是打开一个菜单。通常当使用
<a href='more.php' onclick='show_more_menu()'>More >>></a>
通常情况下,它会跳转到'more.php'页面且不触发show_more_menu()
函数,但我在该页面上显示了一个菜单。如何像谷歌一样实现呢?
如果你的onclick函数返回false,那么默认的浏览器行为将被取消。因此:
<a href='http://www.google.com' onclick='return check()'>check</a>
<script type='text/javascript'>
function check()
{
return false;
}
</script>
无论如何,Google 是否这样做并不重要。更干净的做法是在 JavaScript 中绑定您的 onclick 函数,这样可以将 HTML 与其他代码分开。
您甚至可以尝试以下选项:
<a href="javascript:show_more_menu();">More >>></a>
return null;
,但不包括return;
),这将在某些浏览器中产生意想不到的后果,例如FireFox。页面将用字符串格式的返回值替换所有内容(例如:[object Object]
)。 - rannmann据我理解,您不希望在链接被点击时进行重定向。
您可以这样做:
<a href='javascript:;' onclick='show_more_menu();'>More ></a>
function show_more_menu(e) {
if( !confirm(`Go to ${e.target.href} ?`) ) e.preventDefault();
}
<a href='more.php' onclick="show_more_menu(event)"> More >>> </a>
event
可以神奇地工作,但 evt
却不行? - James Irwinevent
- 我认为你可以在 Stack Overflow 上创建一个新的问题并询问。 - Kamil Kiełczewski还有一种解决方案,即使 javascript
函数返回任何值,也可以防止默认操作。
<a href="www.any-website.com" onclick='functionToRun();return false;'>
不确定这是否符合您的需求,但您可以通过添加role="link"
来使用
href
,但从SEO角度来看应该是可以的。
<div tabindex="0" role="link" aria-label="Example Link" onclick="show_more_menu()">
Click to navigate
</div>
href="#"
应该导航到页面顶部。您可以简单地添加没有内容的href
属性,并获得单击行为。将#
分配为真实页面的URL(而不是单页100%高度的应用程序)通常是一个不好的主意。 - Mike 'Pomax' Kamermans