我的地图脚本有问题。它可以在除Internet Explorer 7和8之外的每个浏览器中正常工作。我做了研究,在阅读了几个线程后,我检查了我的代码是否有任何尾随逗号或保留名称,但要么它不是问题,要么我只是盲目而且真的无法看到实际问题在哪里。错误的代码位于下面的片段底部(据说)。
var arrAddress = new Array();
arrAddress[0] = jQuery('.address-holder0').text();
arrAddress[1] = jQuery('.address-holder1').text();
arrAddress[2] = jQuery('.address-holder2').text();
var optionMap = {
MapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
styles: [
{stylers: [{hue: '#C80071'}, {lightness: -60}, {saturation: 100}]}
]
};
var map = new google.maps.Map(document.getElementById('googleMap'), optionMap);
var geocoder = new google.maps.Geocoder();
var latlngbounds = new google.maps.LatLngBounds();
asyncLoop(arrAddress.length, function(loop){
geocoder.geocode({
'address': arrAddress[loop.iteration()]
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
var image = '<?php echo get_template_directory_uri(); ?>/images/map_pin.png';
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: image
});
latlngbounds.extend(results[0].geometry.location);
}
loop.next();
});
}, function() {
map.fitBounds(latlngbounds);
});
function asyncLoop(iterations, func, callback) {
var index = 0;
var done = false;
var loop = {
next: function(){
if (done) {
return;
};
if (index < iterations) {
index++;
func(loop);
} else {
done = true;
callback();
};
},
iteration: function(){
return index - 1;
},
break: function(){ // the error is located here
//(at least that's what ie says)
done = true;
callback();
}
};
loop.next();
return loop;
};
尝试使用逗号执行任何操作之前只是阻止脚本运行(而且我实际上认为它是必需的)。
我很感激任何帮助。 谢谢, 即
答案 0 :(得分:2)
我检查了我的代码是否有任何尾随逗号或保留名称
你看起来不太努力。 break
是JavaScript中的保留字,虽然ES5更新了规范以允许使用保留字作为属性标识符,但IE8及以下版本未实现该规范。
更改属性的名称或将其用引号括起来。