防止 google 地图使用 turbolinks 加载多次
prevent google maps loaded multiple times with turbolinks
我正在使用 rails 5 和 turbolinks 5,我不想禁用 turbolinks,但它正在多次加载 google 地图 api。
我搜索了很多,找到了很多 rails 4 和 turbolinks 3 的解决方案。我尝试了我看到的所有解决方案,但其中 none 有效。
其中一个看起来很简单:
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-eval="always"></script>
但仍在多次加载 google 地图。
另外一个是:
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-track="reload"></script>
但都不起作用。
一个有前途的解决方案是:
var ready;
ready = function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://maps.googleapis.com/maps/api/js?v=3.exp';
document.body.appendChild(script);
};
$(document).ready(ready);
$(document).on('turbolinks:load', ready);
但是这个有时在地图初始化之前没有加载 google 地图,有时它会返回多次加载的错误。
我读了很多书,有很多问题问同样的问题,但我没有在其中找到任何可行的解决方案。
PD:我现在看到我删除了 google 地图的 api 键,它仍然有效,但我在控制台中看到一条错误消息。
Google Maps API warning: NoApiKeys
如果我在生产中使用 google 没有 api 密钥的地图会有什么问题吗?
我想我已经解决了,看来将 javascript 放在主体的末尾并不是一个好主意,就像我所做的那样。
在 turbolinks 5 文档中据说将它放在 <head>
。
现在我将脚本放在头上,它似乎工作正常,而且我没有看到 google 地图 api.
的多重加载消息
我正在使用 rails 5 和 turbolinks 5,我不想禁用 turbolinks,但它正在多次加载 google 地图 api。
我搜索了很多,找到了很多 rails 4 和 turbolinks 3 的解决方案。我尝试了我看到的所有解决方案,但其中 none 有效。
其中一个看起来很简单:
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-eval="always"></script>
但仍在多次加载 google 地图。
另外一个是:
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-track="reload"></script>
但都不起作用。
一个有前途的解决方案是:
var ready;
ready = function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://maps.googleapis.com/maps/api/js?v=3.exp';
document.body.appendChild(script);
};
$(document).ready(ready);
$(document).on('turbolinks:load', ready);
但是这个有时在地图初始化之前没有加载 google 地图,有时它会返回多次加载的错误。
我读了很多书,有很多问题问同样的问题,但我没有在其中找到任何可行的解决方案。
PD:我现在看到我删除了 google 地图的 api 键,它仍然有效,但我在控制台中看到一条错误消息。
Google Maps API warning: NoApiKeys
如果我在生产中使用 google 没有 api 密钥的地图会有什么问题吗?
我想我已经解决了,看来将 javascript 放在主体的末尾并不是一个好主意,就像我所做的那样。
在 turbolinks 5 文档中据说将它放在 <head>
。
现在我将脚本放在头上,它似乎工作正常,而且我没有看到 google 地图 api.
的多重加载消息