Cha*_*l72 5 html javascript events
这个问题是如此基本,我肯定必须是某些东西的复制品,即使我已经找到了类似的东西.
我的问题基本上是:最初为HTML元素注册事件处理程序的最佳位置是什么?
注册事件处理程序的最简单方法显然是内联:
<div id = "mybutton" onclick = "doSomething()">Click me</div>
Run Code Online (Sandbox Code Playgroud)
但这与现代网络开发中逻辑和内容分离的压倒性进程背道而驰.因此,在2012年,所有逻辑/行为都应该在纯Javascript代码中完成.这很好,它会导致更易于维护的代码.但是你仍然需要一些初始钩子,用你的Javascript代码连接你的HTML元素.
通常,我只是这样做:
<body onload = "registerAllEventHandlers()">
Run Code Online (Sandbox Code Playgroud)
但是......那仍然是"作弊",不是吗 - 因为我们仍然在这里使用内联Javascript.但我们还有其他选择吗?我们不能<script>在该<head>部分的标记中执行此操作,因为此时我们无法访问DOM,因为页面尚未加载:
<head>
<script type = "text/javascript">
var myButton = document.getElementById("mybutton"); // myButton is null!
</script>
</head>
Run Code Online (Sandbox Code Playgroud)
我们在页面底部放置<script>标签还是什么?喜欢:
<html>
<body>
...
...
<script type = "text/javascript">
registerAllEventHandlers();
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这里的最佳做法是什么?
您可以使用window.onload:
<script type = "text/javascript">
window.onload = registerAllEventHandlers;
</script>
Run Code Online (Sandbox Code Playgroud)
或者如果你使用jquery:
$(registerAllEventHandlers);
Run Code Online (Sandbox Code Playgroud)
使用onload之所以有效,是因为它会立即注册onload事件,但在 DOM 准备好时触发它。
| 归档时间: |
|
| 查看次数: |
3307 次 |
| 最近记录: |