javascript - Angular - Javascript - 错误:找不到变量:重新加载页面后的谷歌
问题描述
我使用 Angular 2+ 构建了一个网站,并将 Google Maps Api 包含在我的 index.html 文件中:
<script
async
defer
src="//maps.googleapis.com/maps/api/js?[myKey]&libraries=places">
</script>
<script src="//unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js"></script>
仅在 Iphone 上重新加载页面后,地图不会显示,并且出现错误:“找不到变量:google”
在 PC 和 Android 上运行良好。
我能做些什么来解决这个错误?
解决方案
看起来脚本乱序运行,这是异步脚本加载的一个主要问题。defer
带有or属性的第一个脚本async
在浏览器继续运行时并行加载,并且仅在加载后执行,而第二个(同步)脚本阻塞浏览器并在加载后立即运行(这发生在第一个脚本执行之后或之前,因此顺序是不可预测的)。
要保持顺序,请添加defer
到第二个脚本并async
从第一个脚本中删除(使两者相等defer
并因此按顺序),或者从第一个脚本中删除defer
并async
使其正常加载。
推荐阅读
- javascript - 警报框触发后,“未定义”出现在文档一侧
- kentico - Kentico 错误文件 '/CMSModules/Chat/Controls/SupportChatHeader.ascx' 不存在
- linux - 如何从外部计算机访问 Citadel 管理界面
- r - 当数据框中存在列名“n”时使用`dplyr::tally`
- r - 如何在 flexdashboard 中正确渲染 Sankeynetwork
- javascript - 单页应用程序类列表问题
- google-chrome - chrome 选项 --proxy-bypass-list=<-loopback> 不起作用
- c# - Fluent Assertions BeEquivalentTo 用于在匹配字符串中具有大小写差异的混合对象
- windows - 运行 AHK 脚本
- reactjs - HelpWanted:在带有反应的移动标记传单 js 之后绘制点线