一尘不染

为什么在javascript中使用链接“ protocol”是不好的做法?

javascript

在1990年代,有一种将Javascript代码直接放入<a>href属性的方式,如下所示:

<a href="javascript:alert('Hello world!')">Press me!</a>

然后突然我停下来看看。它们全部被替换为:

<a href="#" onclick="alert('Hello world!')">Press me!</a>

对于仅用于触发Javascript代码且没有实际href目标的链接,为什么鼓励使用该onclick属性而不是该href属性?


阅读 284

收藏
2020-05-01

共1个答案

一尘不染

执行上下文不同,要查看此内容,请尝试以下链接:

<a href="javascript:alert(this.tagName)">Press me!</a> <!-- result: undefined -->
<a href="#" onclick="alert(this.tagName)">Press me!</a> <!-- result: A -->

javascript:通常是在全局上下文中执行,而不是作为元素的方法执行。在大多数情况下,您正在对所操作的元素进行操作或与之相关联,最好在这种情况下执行它。

而且,它更加干净,尽管我根本不会使用内联脚本。查看以更简洁的方式处理这些问题的任何框架。jQuery中的示例:

$('a').click(function() { alert(this.tagName); });
2020-05-01