理解“javascript : ..;“ 在里面 <a href=” “>.

Understanding "javascript : ... ;" inside <a href=" ">

本文关键字:href javascript 在里面 理解      更新时间:2023-09-26

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

喜欢

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

如果您需要传递需要运行的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>

javascript:; 在 href 中与在 "onclick" 属性中放置某些内容相同。

因此

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

与 相同

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

我不确定什么时候使用哪个更好,但值得一提的是,您可以将这些"链接"输入到大多数现代浏览器的地址栏中,它就会运行。

复制并粘贴(或输入,Chrome 似乎禁止这样做)到您的地址栏

javascript:alert("test");

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

仅此一项不做任何事情,但通常是javascript:在一些JavaScript代码之前指示浏览器应该执行代码,而不是将href属性视为URL。就是这样。

这可能旨在作为单击时不执行任何操作的引用,并且可能附带设置 onclick 等以实际执行任何操作。

upd:虽然有人说将脚本放在href中与将其放在onclick中相同,但存在一些差异,例如右键单击时会发生什么(并且某些脚本绝对不应该在新选项卡中打开)。尽管如此,我对这种做法的看法是它有些丑陋,不仅仅是因为当鼠标悬停在链接上时状态栏中没有信息的文本。

你可以

想象有人将"javascript:"复制到url框中并按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!')"),这可能是不希望的(我发现它特别丑陋)。