这个问题是如此基本,我敢肯定 in must be a duplicate of something,即使我已经寻找类似的东西。
我的问题基本上是:最初为 HTML 元素注册事件处理程序的最佳位置在哪里?
注册事件处理程序的最简单方法显然是内联:
<div id = "mybutton" onclick = "doSomething()">Click me</div>
但这与现代 Web 开发中逻辑和内容分离的压倒性进展背道而驰。因此,在 2012 年,所有逻辑/行为都应该在纯 Javascript 代码中完成。这很棒,而且它会导致更易于维护的代码。但是你仍然需要一些初始的钩子来连接你的 HTML 元素和你的 Javascript 代码。
通常,我只是做类似的事情:
<body onload = "registerAllEventHandlers()">
但是......这仍然是“作弊”,不是吗 - 因为我们在这里仍然使用内联 Javascript。但是我们还有其他选择吗?我们不能<script>
在该部分的标签中执行此操作<head>
,因为此时我们无法访问 DOM,因为页面尚未加载:
<head>
<script type = "text/javascript">
var myButton = document.getElementById("mybutton"); // myButton is null!
</script>
</head>
我们是在页面底部<script>
放置标签还是什么?喜欢:
<html>
<body>
...
...
<script type = "text/javascript">
registerAllEventHandlers();
</script>
</body>
</html>
这里的最佳做法是什么?