javascript - 事件处理程序定义说明
问题描述
我从这里尝试了 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>
解决方案
根据几年前的这个问题,并非所有浏览器都支持load
脚本标签上的事件(猜猜哪个……)。这就是为什么他们也在监听readystatechange
事件,当脚本被加载时,他们会调用onload
处理程序。处理程序用一个空函数覆盖自己,这样handleClientLoad()
就不会被调用两次。
推荐阅读
- reactjs - 如何使用 redux 从服务器获取数据?
- r - fs::dir_tree() - 排序目录树
- java - 为什么编译器禁止初始化数组?
- azure-web-app-service - 如何使用 ARM 多次部署 Azure Web App Application Insights 扩展
- java - 如何在 rebase 方法的集合中映射planningId 注释?
- asp.net - ASP.NET webform 访问控制允许 orgin 不起作用?
- c# - 你如何安全地枚举列表
没有终结者的阻碍? - list - 用索引迭代
- list - 组合列表和标签。将对象连接到图层和特定页面的问题
- opayo - Sagepay 3D Secure 重定向到 acs url 返回一个空白页面