事件处理程序定义的说明

时间:2019-04-22 20:21:11

标签: javascript

我尝试使用Google提供的代码段,以使用here中的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>

1 个答案:

答案 0 :(得分:1)

根据this question from a few years ago,并非所有浏览器都支持脚本标签上的let docRef = db.collection("rooms").document("roomA") docRef.getDocument { (document, error) in if let document = document, document.exists { let dataDescription = document.data().map(String.init(describing:)) ?? "nil" print("Document data: \(dataDescription)") } else { print("Document does not exist") } } 事件(猜测哪个…)。这就是为什么他们也监听load事件的原因,并且在加载脚本时,他们调用readystatechange处理程序。处理程序会使用空函数覆盖自身,这样不会onload被调用两次。