gpt4 book ai didi

javascript - 在某些情况下,您必须在 HTML/JavaScript 中使用早期绑定(bind)/内联事件属性吗?

转载 作者:行者123 更新时间:2023-11-29 09:58:39 25 4
gpt4 key购买 nike

在我对以下 SO 问题的回答中:What does event binding mean? , 我顺便说一句,使用 inline-JavaScript/Early-Binding 来绑定(bind) JavaScript 事件是“经常被误导的”

例如:

<input id="MyButton" type="button" value="clickme" onlick="Somefunction()" />

我一直在争论标记中没有引用 JavaScript 的“后期绑定(bind)”方法,据我所知这是最佳实践。然而,评论者断言有些场合需要使用它,我想知道这些可能是什么。

在不讨论两者的相对优点的情况下,任何人都可以想到任何情况要求您使用(例如)onclick 属性而不是后期绑定(bind)方法。

最佳答案

commenters asserted that there were occasions that necessitated its use

我想我是那些评论员中的一员。我实际上说的是内联监听器“在某些情况下是一个合理的选择”。我不认为在任何情况下它是“必需的”(我在这种情况下理解为必需)。

添加内联监听器只是在服务器上应用相同的逻辑来添加将在客户端上应用的监听器,其优点在于:

  1. 可以创建和缓存标记或将其用作静态页面,当下载页面时,每个客户端都不会一遍又一遍地添加监听器
  2. 与元素可用和由 DOMReady 或 onload 函数或“底部脚本”添加的监听器之间的延迟相关的问题已完全消除
  3. 带有 onload 回退的各种“跨浏览器”DOMReady 函数的变幻莫测已被删除 - 如果不使用这些函数,则没有机会无法添加监听器

当然这并不意味着所有的监听器都应该内联添加,动态添加监听器是垃圾,我只是指出它是解决某些问题的可行方法,并且在许多情况下是完全合理的解决方案例。

如果您认为听众的“早期绑定(bind)”是好的,那么请尽可能早地进行——将它们放入内联。 :-)

附言。我还认为我说过我不喜欢在这种情况下使用“绑定(bind)”,因为听众在任何实际意义上都不会绑定(bind)到元素。它们只是在元素接收到相关事件时调用的函数。唯一的绑定(bind)类型是监听器的 this 关键字可以设置为引用相关元素(这在所有浏览器中对于内联监听器都是一致的,但对于后来添加的监听器则不一定)。

关于javascript - 在某些情况下,您必须在 HTML/JavaScript 中使用早期绑定(bind)/内联事件属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com