首页 > 解决方案 > 事件处理程序定义说明

问题描述

我从这里尝试了 Google 提供的用于在 JavaScript 中使用电子表格 API 的代码片段。它有效,但我不明白以下部分。

<script async defer src="https://apis.google.com/js/api.js"
    onload="this.onload=function(){};handleClientLoad()"
    onreadystatechange="if (this.readyState === 'complete') this.onload()">
</script>

特别是,为什么代码是这样编写的,而不是如下:

<script async defer src="https://apis.google.com/js/api.js"
    onload="handleClientLoad()">
</script>

标签: javascript

解决方案


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


推荐阅读