5 回答
如果您需要传递需要运行的 javascript片段而不是元素的默认行为,则使用此javascript: ;
语法。
例如
<a href="javascript:alert('');">Test</a> <!-- Runs on the click of the link -->
同样,您也可以将它们组合在其他事件上,例如等onclick
,onchange
但这实际上不是必需的,因为您可以直接执行代码段。
我多年来看到的这个用途是:
<a href="javascript:void(0);">Test</a>
<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!')”),这可能是不受欢迎的(我觉得它特别难看)。