2

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

<body onload="initialize()">

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

<script type="text/javascript">
    window.onload = function () {
        initialize();
    }
</script>

但是,我无权访问正文标签或标签的确切结尾。有没有其他方法可以在不执行上述操作的情况下调用此函数?

4

3 回答 3

6

在窗口加载事件中执行此操作不是一个好主意 - 如果您加载了一些高延迟图像或其他资产,那么您的谷歌地图将加载非常缓慢。在结束正文标记之前,添加以下内容:

<script>
 initialize();
</script>

谷歌在构建地图之前需要准备的只是 DOM,而不是页面上的每一个资产。当脚本在结束 body 标记之前加载时,DOM 总是完全加载。

编辑

从技术上讲,谷歌地图在构建它的地图之前需要准备好就是要放置它的 div。所以你甚至不需要在你的结束 body 标签之前有脚本,你可以在之后立即拥有它你的地图 div 标签是这样的:

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

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


...more html
</body>

于 2013-03-14T14:10:03.677 回答
5

当我只是随机尝试某事时,我已经弄清楚了。将以下内容添加到标题中的事项。API V3 万岁!

<script type="text/javascript">
    google.maps.event.addDomListener(window, 'load', initialize);
</script>
于 2013-03-14T14:05:54.780 回答
1

您也可以调用以下方式

    <div id="map-canvas"></div>

    $("#map-canvas").on("load", function () {
       initialize();            
    });
于 2013-03-14T14:20:19.850 回答