Javascript 谷歌地图API';s初始化函数,不带ONLOAD body标记或在结束body之前
我正在一个使用DotNetNuke CMS的网站上工作。我已经使用API添加了一个Google地图,但是我需要在页面加载后调用initialize()函数。通常情况下,您会使用:Javascript 谷歌地图API';s初始化函数,不带ONLOAD body标记或在结束body之前,javascript,jquery,html,google-maps-api-3,Javascript,Jquery,Html,Google Maps Api 3,我正在一个使用DotNetNuke CMS的网站上工作。我已经使用API添加了一个Google地图,但是我需要在页面加载后调用initialize()函数。通常情况下,您会使用: <body onload="initialize()"> 或者在标签前面添加以下内容: <script type="text/javascript"> window.onload = function () { initialize(); } </sc
<body onload="initialize()">
或者在标签前面添加以下内容:
<script type="text/javascript">
window.onload = function () {
initialize();
}
</script>
window.onload=函数(){
初始化();
}
但是,我无法访问body标签或标签的确切末端。有没有其他方法可以在不执行上述操作的情况下调用此函数?我在随机尝试某项操作时就知道了。在标题中添加以下内容的问题。API V3万岁
<script type="text/javascript">
google.maps.event.addDomListener(window, 'load', initialize);
</script>
google.maps.event.addDomListener(窗口“加载”,初始化);
在窗口加载事件中执行此操作不是一个好主意-如果您加载了一些高延迟图像或其他资产,那么您的google地图加载速度将非常缓慢。在结束正文标记之前,添加以下内容:
<script>
initialize();
</script>
初始化();
谷歌在构建地图之前需要准备的只是DOM,而不是页面上的每一项资产。当脚本在结束正文标记之前加载时,DOM总是完全加载
编辑
从技术上讲,谷歌地图在构建其地图之前需要准备好的就是它将要放置的分区。因此,您甚至不需要在结束body标记之前使用脚本,您可以在map div标记之后立即使用脚本,如下所示:
<html>
...
<body>
...html...
<div id="map-canvas"></div>
<script>initialize();</script>
...more html
</body>
...
…html。。。
初始化();
…更多html
您也可以按以下方式调用
<div id="map-canvas"></div>
$("#map-canvas").on("load", function () {
initialize();
});
$(“#地图画布”)。在(“加载”上,函数(){
初始化();
});
您不能将脚本部分放在代码中的任何位置。只要它在你可以编辑的内容的底部?@Rafe,我已经尝试过了,但不幸的是,对于特定的页面不可能。这将导致代码出现在网站的每个页面上(30000页而不是1页)。我觉得有点过分了。不过,我已经找到了解决方案,请检查答案。不要将此附加到窗口加载事件,请参阅下面我的答案,了解不应使用此事件的原因。