2

我有一个使用 HTML5 历史 API 导航和重新加载页面信息的站点。这会发送一个检索相关页面信息的 AJAX 调用。在我的“联系人”页面上,我有 google maps api 脚本。如果通过访问 URL 加载页面,它工作正常。谷歌加载地图 API 并将其包含在我的结束正文标记之前。

如果我离开页面(使用历史 API 删除和添加内容),然后返回到联系人页面(再次通过历史 API),则会对(已包含的)地图 API 进行第二次调用,并将其加倍. 这会导致控制台中出现警告消息。

我已尝试在加载新内容之前删除在结束正文标记之前添加的 Google 地图脚本,但由于脚本已被解析,地图的所有相关功能仍保留在浏览器内存中。

所以我想我的问题是,“当我对页面内容发出 AJAX 请求时,有什么方法可以卸载所有的谷歌地图 JS?”。

控制台消息如下:

警告:您已在此页面上多次包含 Google Maps API。这可能会导致意外错误。

4

1 回答 1

1

我也收到此错误,我有一个使用谷歌地图的页面,如果我使用 ajax 重新加载带有谷歌地图代码的页面部分,则会出现错误。

请注意,我的 HTML 没有重复,但一个 html 块被具有谷歌地图 HTML 的相同数据覆盖,并且它被视为两个块而不是一个看起来。我什至在插入 html 块之前尝试使用 jquery .empty() 但没有变化,仍然是多个错误。该页面在加载时不会抛出错误,所以我唯一的结论是这个。

编辑:当我想到它时,我认为原因是我的 HTML 块包含一个脚本包含行,即使这只是 HTML 中的一次,这一行的重点是将一堆代码加载到 DOM 中,所以简单地说...解决方案只加载一次脚本 - 正如谷歌所说!哦!只需要考虑一下那些 < script src=" 行基本上对 DOM 有什么作用 :) 所以添加一个 JS 块检查是否加载了 maps api 并且仅在未加载时才加载。想想 include() 和 include_once() 的 PHP 区别

于 2017-04-10T16:34:37.563 回答