Javascript 事件处理程序定义的解释

Javascript 事件处理程序定义的解释,javascript,Javascript,我尝试了Google提供的代码片段,以便在JavaScript中使用电子表格API。它是有效的,但我不理解下面的部分 特别是,为什么代码以这种方式编写,而不是按如下方式编写: 根据,并非所有浏览器都支持脚本标记上的load事件(猜猜是哪一个…)。这就是为什么他们也在监听readystatechange事件,当加载脚本时,他们调用onload处理程序。处理程序用一个空函数覆盖自身,这样就不会调用两次handleClientLoad()。坦率地说,我很惊讶它竟然使用onload。现在已经不是1

我尝试了Google提供的代码片段,以便在JavaScript中使用电子表格API。它是有效的,但我不理解下面的部分


特别是,为什么代码以这种方式编写,而不是按如下方式编写:



根据,并非所有浏览器都支持脚本标记上的
load
事件(猜猜是哪一个…)。这就是为什么他们也在监听
readystatechange
事件,当加载脚本时,他们调用
onload
处理程序。处理程序用一个空函数覆盖自身,这样就不会调用两次
handleClientLoad()

坦率地说,我很惊讶它竟然使用
onload
。现在已经不是1998年了,不应该再在…处理程序上使用
。@Mike'Pomax'Kamermans:这可能是最简洁的跨浏览器/版本代码片段。如果您想使用domapi添加事件处理程序,您必须添加一些方法来查找元素(例如ID),并确保不会与其他元素冲突。这几乎是自包含的,并且将“正常工作”
可以在任何浏览器中工作,即使是最基本的JS支持,也不需要对脚本进行任何类型的
onload
监控。它只是在解析完成时运行。(当然,你很可能是对的,但后来谷歌的某个人没有意识到onload是不必要的)@Mike'Pomax'Kamermans:“它只是在解析完成时运行。”呃?计算脚本元素所引用的代码时,
onload
处理程序将运行。这在将来的某个时候会发生。我认为这可能是IE<10不理解
async
的一个解决办法。有人提到过这一点