Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图API';s初始化函数,不带ONLOAD body标记或在结束body之前_Javascript_Jquery_Html_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图API';s初始化函数,不带ONLOAD body标记或在结束body之前

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

我正在一个使用DotNetNuke CMS的网站上工作。我已经使用API添加了一个Google地图,但是我需要在页面加载后调用initialize()函数。通常情况下,您会使用:

<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页)。我觉得有点过分了。不过,我已经找到了解决方案,请检查答案。不要将此附加到窗口加载事件,请参阅下面我的答案,了解不应使用此事件的原因。