理解“javascript:...;”在<a href=" "></a>内

时间:2012-04-25 04:02:34

标签: javascript html

链接中javascript:;属性中保留的href的含义是什么?

<a href="javascript: ... ;">Link</a>

5 个答案:

答案 0 :(得分:5)

如果您需要传递需要运行的javascript 代码段而不是元素的默认行为,那么您可以使用此javascript: ;语法。

例如

<a href="javascript:alert('');">Test</a> <!-- Runs on the click of the link -->

同样,您也可以将其与其他事件相结合,例如onclickonchange等,但这确实是不是,因为您可以直接执行代码段。

我多年来看到的用途是:

  1. <a href="javascript:void(0);">Test</a>
  2. <form action="javascript:void(0);">..</form>

答案 1 :(得分:2)

javascript:;在href中,与在“onclick”属性中放置内容相同。

因此,

<a href="javascript:do_something();">Link</a>

相同
<a href="#" onclick="do_something();">Link</a>

我不确定哪个更好用,但值得一提的是你可以在大多数现代浏览器的地址栏中键入这些“链接”并运行它。

复制并粘贴(或键入,Chrome似乎禁止此操作。)到您的地址栏

javascript:alert("test");

以及您可以将带有这些地址的链接保存到书签,以便它可以在您单击书签的任何页面上运行该脚本。

答案 2 :(得分:1)

仅此一项无效,但通常 javascript:位于某些JavaScript代码之前,表示浏览器应执行代码而不是将href属性视为URL。多数民众赞成。

答案 3 :(得分:0)

这可能是作为一个参考,在点击时什么都不做,可能伴随着设置onclick等实际做任何事情。

更新:虽然有人说将脚本放在href中与将其放入onclick相同,但是有一些差异,例如右键单击时发生的事情(有些脚本肯定不应该在新标签中打开等) 。不过,我对这种做法的看法是,它有点难看,而且不仅仅是因为当鼠标悬停在链接上时,状态栏中的文字无法提供信息。

答案 4 :(得分:-2)

你可以想象,有人复制“javascript:;”进入网址框并按Enter键。由于它以“javascript:”开头,因此浏览器将知道在当前页面中执行以下javascript的内容。由于以下所有内容都是“;”,实际上什么都不会发生。这与单击onClick属性设置为“;”的按钮相同。

例如:

<a href="javascript:alert('howdy!')">Click me!</a>

具有与

相同的效果
<button onClick="alert('howdy!')">Click me!</button>

甚至

<a href="#" onClick="alert('howdy!')">Click me!</a>

请记住,因为它是一个链接,大多数浏览器会在状态栏中呈现其地址(在这种情况下为“javascript:alert('howdy!')”),这可能是不受欢迎的(我发现它特别难看。