Javascript 谷歌地图不会仅在IE7中加载:';对方法或属性访问的意外调用';
我有一个地图,当用户点击按钮时,它会初始化谷歌地图。这将触发运行此方法的事件:Javascript 谷歌地图不会仅在IE7中加载:';对方法或属性访问的意外调用';,javascript,google-maps,internet-explorer-7,google-maps-api-3,Javascript,Google Maps,Internet Explorer 7,Google Maps Api 3,我有一个地图,当用户点击按钮时,它会初始化谷歌地图。这将触发运行此方法的事件: $self.maps = { loadMap : function(){ var canvasDom = "map"; var latlng = new google.maps.LatLng(40.7608, -111.8910); var myOptions = { zoom: 12, center: latln
$self.maps = {
loadMap : function(){
var canvasDom = "map";
var latlng = new google.maps.LatLng(40.7608, -111.8910);
var myOptions = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
$self.vars.maps.map = new google.maps.Map(document.getElementById(canvasDom), myOptions);
},
//other methods in the object for handling other maps stuff...
};
当调用最后一行创建新地图时,出现以下错误:
“SCRIPT65535:对方法或属性访问的意外调用。”
main.js,第31行,字符347
它似乎要中断的代码行是:
a[Va](b);
所有这些都适用于Firefox、Chrome、IE8和IE9,除了IE7(使用IE9的兼容模式)之外,我尝试过的所有东西
更新:我已经设置了一个,以相同的方式初始化映射,只是出于某种原因,它不会重现我在应用程序中遇到的IE7错误。我真的不确定这说明了什么问题。在几个小时痛苦地注释脚本以查找冲突后,我开始手动粘贴创建地图之前正在运行的代码块。最后,我把它砍成了罪犯 看看这个:
//set that the map is open, and
//should remain so if the user searches again
$('form').append('<input type="hidden" name="map" value="true">');
$('#search-list-map')
.removeClass('listview')
.addClass('mapview');
//show map, hide list
$('#map').removeClass('hide');
$('#listResults').addClass('hide');
//initialize the map
$self.maps.loadMap();
//设置地图处于打开状态,然后
//如果用户再次搜索,则应保持此状态
$('form')。追加('');
$(“#搜索列表映射”)
.removeClass('listview'))
.addClass(“地图视图”);
//显示地图,隐藏列表
$('#map')。removeClass('hide');
$('#listResults').addClass('hide');
//初始化映射
$self.maps.loadMap();
loadMap()是我在上述问题中引用的方法注意,我将输入字段附加到表单中?结果是,如果有一个元素的名称与map div的id相同,并且该元素出现在DOM中map div的之前,它将抛出一个错误。据我所知,这只会发生在IE7中(可能是IE6,我没有办法进行测试)
我已经在JSFIDLE上复制了这个bug。在IE7下运行它,你会成功的