当前位置: 首页 > 面试题库 >

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

翟浩穰
2023-03-14
问题内容

在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属性?


问题答案:

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

<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); });


 类似资料:
  • 问题内容: 我已经多次听到在HTML 中使用JavaScript事件(例如)是不正确的做法,因为它不利于语义。我想知道不利之处以及如何解决以下代码? 问题答案: 您可能正在谈论简洁的Javascript,看起来像这样: 中央javascript文件中的逻辑如下所示: 优点是 行为(JavaScript)与表示(HTML)分开 没有语言的混合 您正在使用像jQuery这样的javascript框架,

  • 问题内容: 我已经多次听到在HTML 中使用JavaScript事件(例如)是不正确的做法,因为它不利于语义。我想知道不利之处以及如何解决以下代码? 问题答案: 您可能正在谈论简洁的Javascript,看起来像这样: 中央javascript文件中的逻辑如下所示: 优点是 行为(JavaScript)与表示(HTML)分开 没有语言的混合 您正在使用像jQuery这样的javascript框架,

  • 我有一个问题,关于什么是正确的做法,使用SwingU实用程序的调用稍后方法。 所以首先,我想确认我理解正确。 据我所知,对GUI的更改必须在EDT上完成,因为Swing组件不是线程安全的。invokeLater方法将Runnable作为参数,该Runnable中包含的任何内容都将在EDT上运行。因此,对Swing组件的任何调用都被放入一种队列中,在EDT上一次执行一个。 有了这些,我的问题是:使用

  • 问题内容: 在回答了有关如何使用强制释放Java中的对象(那个家伙正在清除1.5GB的HashMap)的问题后,有人告诉我手动调用是一种不好的做法,但是注释并不完全令人信服。此外,似乎没有人敢于赞成,也没有反对我的答案。 有人告诉我这是一种不好的做法,但是后来我又被告知,垃圾收集器的运行不再系统地停止世界,而且它也可以有效地被JVM用作提示,所以我有点不知所措。 我确实知道,JVM在需要回收内存时

  • 问题内容: 我们的代码库中有几个空的抽象类。我觉得很丑。但是除了这个非常愚蠢的原因(丑陋)之外,我是否应该将其重构(例如,插入空接口)? 否则,代码将很健壮并经过良好测试。因此,如果仅出于“审美”原因,我将通过并保留空的抽象类。 你怎么看? 编辑: 1)“空抽象类”的意思是: 2)“空”的原因:休眠。我根本不掌握这个持久性框架。我只知道不能将接口映射到表,并且由于这个技术原因,类比接口更受欢迎。

  • 本文向大家介绍什么是JavaScript中的函数链接?,包括了什么是JavaScript中的函数链接?的使用技巧和注意事项,需要的朋友参考一下 功能链 函数链接不过是使用点表示法将函数分组在一行中而已。这种类型的链接使代码非常简洁,并提高了性能。在这里,我们将学习使用常规对象进行函数链接。 a)没有功能链  在以下示例中的对象“OBJ”被创建并在该对象中的公共属性 称为“I”是使用关键字创建“这个