为什么不在body元素上使用javascript处理程序?

Ale*_*ing 6 html javascript handlers javascript-events onload

作为对"网页加载时如何自动将焦点设置为文本框?"问题的回答,Espo建议使用

<body onLoad="document.getElementById('<id>').focus();">
Run Code Online (Sandbox Code Playgroud)

Ben Scheirman 回复(未作进一步解释):

任何javascript书都会告诉你不要把处理程序放在body元素上

为什么这被认为是不好的做法?在Espos答案中,说明了"覆盖"问题.这是唯一的原因,还是有其他问题?兼容性问题?

Pek*_*ica 7

使用onLoad变得越来越不常见,因为使用此方法无法堆叠回调,即新onload定义会覆盖旧定义.

在像jQuery和它这样的现代框架中.load(),回调可以堆叠,并且在同一页面上使用不同的脚本,插件等时没有冲突.

此外,将标记与代码分开是一种广泛认为的好习惯,因此即使有人想要使用onload(如果您控制整个环境并知道自己在做什么,这是完全可以的),可以将该事件附加到脚本方面或在head单独的javaScript文件中:

window.onload = function() { document.getElementById...... }
Run Code Online (Sandbox Code Playgroud)