我正在使用 MVC 重构网站。一组带有 javascript、php、html 等的大页面正在变成一系列 Controller 和 View 。我正在尝试以模块化方式进行操作,以便将 View 拆分为“模块”,我可以在需要时在其他页面中重复使用
例如。 "view/searchform 只显示一个 div 和 searchform "view/display_events 显示事件列表 等等。
其中一个旧页面应该加载带有标记的谷歌地图。
在其余代码中,我可以如下识别相关位
<head>
<script src="http://maps.google.com/maps?file=api&v=2&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()">
...最后是应该显示 map 的这个 div
<div id="map" style="width: 440px; height: 300px"> </div>
对js了解不多,但我的理解是这样
a) 我必须在我正在编写的 View 模块中包含脚本(直接在 HTML 中?我更愿意加载一个单独的脚本)
b) 我必须使用等效于 body onload 来触发该函数...(显然我认为没有 body 标签。在我的无知中我已经尝试过 div onload=.... 但似乎没有正在工作:)
你建议我做什么? 我读过 window.onload 但不知道正确的语法是什么。
请记住,页面的其他部分包括在页脚之后调用的其他 js 函数(例如,google adsense)。
最佳答案
您可以使用 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
}
将它放在 View 的脚本标记中,加载函数将在加载窗口后调用。
google API 可能还提供了一种附加加载事件的方法,但我不熟悉它。
关于javascript - 如何使用window.onload?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593738/