【发布时间】:2014-06-14 18:47:14
【问题描述】:
我将提供更多信息来解释我的情况。我正在使用 PhoneGap 构建一个应用程序以在 iOS 上进行部署。我有一个用户将导航到的视图/页面(不使用 ajax),它将加载所需的 google maps js 脚本并调用cordova geolocation api。
我的问题是加载谷歌地图脚本:
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXX&sensor=true"></script>
加载时间过长,并且页面停止渲染长达近 3 秒。我想推迟外部脚本的加载,直到页面完全呈现。将之前的脚本放在页面底部根本没有帮助。
我试图使用 getScript() 但它不起作用并在调试控制台中抛出以下错误:
Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.
我在实际的脚本标签中尝试了“延迟”和“异步”,但这也会引发同样的错误。加载外部 JS 文件的其他方法让我收到相同的错误消息。
是否有任何可能的解决方法来解决这个问题。我什至不知道错误语句是什么意思...
【问题讨论】:
-
-1?那有点苛刻。任何人都想自愿提供更多信息,这背后的原因是什么? @geocodezip,我已经尝试过按照您的建议进行操作。事实上,我已经尝试了几种方法,但它们都不起作用。我已经弄清楚了核心问题,我正在加载的远程 google api 脚本实际上是在加载另一个脚本,所以是的,我不能异步调用一个异步调用另一个脚本的脚本。我会尽快发布解决方案。
-
再次阅读文档,有一个回调参数,您可以异步加载API并在准备好使用时调用它(运行定义为回调的函数)。
-
好的,我现在明白了。我又摆弄了一些,只是为回调放置了一个空函数(因为我不想在回调上运行任何函数)。一个按钮加载地图和位置。
-
您最好从相关代码示例中删除 API 密钥。
标签: javascript html google-maps