一尘不染

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

javascript

内联事件处理程序是否被视为不良做法?

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

如果是这样,使用内联事件处理程序有哪些缺点?


阅读 229

收藏
2020-04-25

共1个答案

一尘不染

这是一个坏主意,因为…

1)很长一段时间以来,人们一直在明智地强调内容,样式和脚本之间的清晰区分。用JS混淆HTML与此不一致。

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

  • 您只能将每种类型的一个事件与DOM-零事件(即内联click事件)进行绑定,因此您不能拥有两个事件处理程序

  • 如果以内联方式指定事件,则将JS指定为字符串(属性值始终为字符串),并在事件触发时进行评估。评价是邪恶的。

  • 您将不得不引用命名函数。这并不总是理想的(事件处理程序通常采用匿名函数),并且对需要全局的函数有影响

简而言之,可通过专用addEventListenerAPI或jQuery等集中处理事件。

2020-04-25