我尝试使用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>
答案 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
被调用两次。