就像在标题中一样 - 为什么谷歌地图代码会阻止我的其他js脚本?我在标题中有以下代码:
<script type="text/javascript">
/* Sets up the map with markers */
function starter()
{
var latlng = new google.maps.LatLng(38.60427939057251, -9.07470703125);
var myOptions = {
zoom: 4,
center: latlng,
navigationControl: true,
scaleControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("tab14"), myOptions);
/* Sets up markers */
markers = [];
infoWindow = new google.maps.InfoWindow();
for (var i = 0, coordinates; coordinates = data.coords[i]; i++)
{
var iconImage = new google.maps.MarkerImage("http://map.lgfl.org.uk/images/arrow_green.png");
var LatLng = new google.maps.LatLng(coordinates.latitude, coordinates.longitude);
var marker = new google.maps.Marker({position: LatLng, icon: iconImage });
var contentString = '<div>'+
'<a href='+coordinates.url+'><h4>'+coordinates.title+'</h4></a>'+
'<div>'+
'<p><a href='+coordinates.url+'>'+coordinates.excerpt+'</a></p>'+
'</div>'+
'</div>';
addMarker(marker, contentString);
markers.push(marker);
}
/* Sets up marker clusterer */
var markerCluster = new MarkerClusterer(map, markers);
function addMarker(marker, content)
{
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(content);
infoWindow.open(map, marker);
});
}
}
window.onload = starter;
</script>
现在,当我想要包含任何其他js代码来在页面上执行不同的操作时,由于此代码,它不会执行此操作。当我注释掉window.onload = starter line时,一切正常。有人可以告诉我这里我做错了什么吗?
答案 0 :(得分:1)
确保starter
函数中没有任何错误,很可能是你的地图画布(你没有带有此ID的元素):
document.getElementById("tab14")
或您的data
对象:
for (var i = 0, coordinates; coordinates = data.coords[i]; i++)
我看不出你在哪里设置它。
编辑:
根据您的问题的评论,您似乎覆盖了onload
方法,只是这不起作用:
window.onload = func1;
window.onload = func2;
这只会执行func2
方法!
试试这个:
function func1() {
alert("This is the first.");
}
function func2() {
alert("This is the second.");
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(func1);
addLoadEvent(func2);
addLoadEvent(function() {
document.body.style.backgroundColor = '#EFDF95';
})
答案 1 :(得分:1)
window.onload
是单个函数入口点。无论哪一段代码设置它最后定义了将执行的唯一代码。你需要做的是使用某种框架(比如jQuery),它将设置一个文件加载后执行的函数队列(ready
函数实质上设置了一个要调用的函数列表),或者自己写一下。
以下是一个例子:
function addLoadHandler(func) {
var oldEventHandler = window.onload;
window.onload = function() {
if (oldEventHandler) {
oldEventHandler();
}
func();
};
}
答案 2 :(得分:0)
谷歌地图确实会引发一些关于其iframe尝试访问您网页的错误。尝试将Google代码移动到页脚中,以便最后加载它。