Google Maps API的初始化功能没有ONLOAD正文标记或在结束正文之前

Jas*_*son 2 html javascript jquery google-maps-api-3

我正在使用DotNetNuke CMS的网站上工作.我已经使用API​​添加了Google Maps地图,但是我需要在页面加载时调用initialize()函数.通常你会这样做:

<body onload="initialize()">
Run Code Online (Sandbox Code Playgroud)

或者在</ body>标记之前添加以下内容:

<script type="text/javascript">
    window.onload = function () {
        initialize();
    }
</script>
Run Code Online (Sandbox Code Playgroud)

但是我无法访问body标签或标签的确切结尾.有没有其他方法调用此功能而不执行上述操作?

Ada*_*dam 6

在窗口加载事件上执行此操作不是一个好主意 - 如果您有一些高延迟图像或其他资源加载,那么您的谷歌地图将加载速度非常慢.在关闭正文标记之前,添加以下内容:

<script>
 initialize();
</script>
Run Code Online (Sandbox Code Playgroud)

谷歌在构建它的地图之前需要准备就绪的是DOM,而不是页面上的每一个资产.在脚本在关闭正文标记之前加载时,DOM总是完全加载.

编辑

从技术上讲,所有谷歌地图需要在它构建之前做好准备它的地图是它将被放置的div.所以你甚至不需要在关闭身体标签之前有脚本,你可以在之后立即使用它你的地图div标签是这样的:

<html>
...
<body>
...html...

<div id="map-canvas"></div>
<script>initialize();</script>


...more html
</body>
Run Code Online (Sandbox Code Playgroud)


Jas*_*son 5

当我偶然尝试一些东西时,我已经想通了.将以下内容添加到标题中很重要.API V3万岁!

<script type="text/javascript">
    google.maps.event.addDomListener(window, 'load', initialize);
</script>
Run Code Online (Sandbox Code Playgroud)