如何使用window.onload?

时间:2010-04-07 15:29:05

标签: javascript

我正在使用MVC重构网站。什么是一组javascript,php,html等大页面正在成为一系列控制器和视图。我试图以模块化方式进行,因此视图分为“模块”,我可以在需要时在其他页面中重复使用

例如。 “view / searchform只显示搜索表单中的一个div “view / display_events显示事件列表 等等。

其中一个旧页面应该加载带有标记的谷歌地图。

在其余代码中,我可以识别相关位,如下所示

<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=blablabla" type="text/javascript"></script>

<script type="text/javascript">
//<![CDATA[
function load() {
    if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        var point = new GLatLng(<?php echo ($info->lat && $info->lng) ? $info->lat .",". $info->lng : "51.502759,-0.126171"; ?>);
        map.setCenter(new GLatLng(<?php echo ($info->lat && $info->lng) ? $info->lat .",". $info->lng : "51.502759,-0.126171"; ?>), 15);
        map.addControl(new GLargeMapControl());
        map.addControl(new GScaleControl());
        map.addOverlay(new GMarker(point));
        var marker = createMarker(point,GIcon(),"CIAO");
        map.addOverlay(marker);
    }
}
//]]>
</script>
</head>

...然后

<body onload="load()" onunload="GUnload()">

...最后这个div应该显示地图

<div id="map" style="width: 440px; height: 300px"> </div>

对js不太了解,但我的理解是

a)我必须在我正在编写的视图模块中包含脚本(直接在HTML中?我更愿意加载一个单独的脚本)

b)我必须使用相当于body onload来触发该函数...(显然我的视图中没有正文标记。在我的无知中我尝试了div onload = ....但似乎没有工作:)

你建议我做什么? 我已经阅读了window.onload,但不知道它的正确语法是什么。

请注意,页面的其他部分包含在页脚后调用的其他js函数(例如,google adsense)。

1 个答案:

答案 0 :(得分:3)

您可以使用js将处理程序附加到窗口加载事件,因此您不需要标记。

// crossbrowser event binding from http://www.quirksmode.org/js/eventSimple.html
//function addEventSimple(obj,evt,fn) {
//    if (obj.addEventListener)
//      obj.addEventListener(evt,fn,false);
//    else if (obj.attachEvent)
//      obj.attachEvent('on'+evt,fn);
//}

// using Google API's event functions
GEvent.addDomListener(window, "load", load);
GEvent.addDomListener(window, "unload", GUnload);

function load() {
    // your load function
}

将其放在视图的脚本标记中,并在加载窗口后调用加载函数。

谷歌API可能也提供了一种附加加载事件的方法,但我不熟悉它。