带有Javascript onclick事件的HTML锚标记

sma*_*kid 74 javascript anchor onclick hyperlink

在使用Google时,我发现他们在锚标签中使用onclick事件.

在谷歌标题部分的更多选项中,它看起来像普通标签,但是点击它不会被重定向但是打开了一个菜单.通常在使用时

<a href='more.php' onclick='show_more_menu()'>More >>></a>
Run Code Online (Sandbox Code Playgroud)

它通常会在没有触发的情况下进入'more.php' show_more_menu(),但我在该页面中显示了一个菜单.谷歌怎么办?

TJH*_*vel 106

如果onclick函数返回false,则取消默认浏览器行为.因此:

<a href='http://www.google.com' onclick='return check()'>check</a>

<script type='text/javascript'>

function check()
{
    return false;
}

</script>
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,谷歌是否做到这一点并不重要.在javascript中绑定你的onclick函数更简洁 - 这样你就可以将HTML与其他代码分开了.

  • 请谨慎遵循上述建议,因为 HTML5 规则明确规定 `href="#"` 应该导航到页面顶部。您可以简单地添加没有内容的 `href` 属性,并获得点击行为。Assing `#` 作为真实页面的 url(而不是单页 100% 高度的应用程序)通常是一个坏主意。 (6认同)
  • 1.更确切地说,在href ="#"中使用#并在javascript中执行必要的操作.用#href点击该链接是安全的.该页面确实留下/重新加载网址. (2认同)

sun*_*un2 48

您甚至可以尝试以下选项:

<a href="javascript:show_more_menu();">More >>></a>
Run Code Online (Sandbox Code Playgroud)

  • 警告:如果函数返回任何显式值(例如:“return null;”,但不是“return;”),这将在某些浏览器(例如 FireFox)中产生意想不到的后果。该页面将用字符串格式的返回值替换所有内容(例如:“[object Object]”)。 (2认同)

Adi*_*har 40

根据我的理解,您不希望在单击链接时重定向.你可以做 :

<a href='javascript:;' onclick='show_more_menu();'>More ></a>
Run Code Online (Sandbox Code Playgroud)

  • 当您不希望href指向任何地方时,这很有用。 (2认同)

Kam*_*ski 9

使用以下代码显示菜单,而不是转到 href 地址

function show_more_menu(e) {
  if( !confirm(`Go to ${e.target.href} ?`) ) e.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)
<a href='more.php' onclick="show_more_menu(event)"> More >>> </a>
Run Code Online (Sandbox Code Playgroud)