为什么内联事件处理程序在现代语义HTML中是一个坏主意?

内联事件处理程序是否被认为是不好的做法?

例如: <button onclick=someFunction()>Click me!</button>

如果是这样,使用内联事件处理程序的缺点是什么?

这是一个坏主意,因为…

1)长期以来,对内容,风格和脚本之间的明确分割已经有了合理的重点。 用JS混合你的HTML不符合这个。

2)更重要的是,你对事件的控制要less得多。 特别:

  • 你可以只绑定一个DOM-zero事件(这是内联的事件)的事件,所以你不能有两个click事件处理程序

  • 如果一个事件被内联指定,则JS被​​指定为一个string(属性值总是string),并在事件触发时进行评估。 评价是邪恶的。

  • 你面临着不得不引用命名的function。 这并不总是理想的(事件处理程序通常采用匿名函数),并且影响到需要成为全局的函数

简而言之,通过专用的addEventListener API或通过jQuery等来集中处理事件。