2013-03-08 49 views
0

您好我有這樣的代碼在我的頁腳,它workes在所有瀏覽器罰款,但IE8在IE8只直接pageloads藉機罰款,如果我輸入域和回車鍵,它就像一個魅力,但如果我刷新,我得到一個「對象expekted」,因爲「google.maps」成爲一個空的對象,例如:JSON.stringify(google.maps)=='[]'腳本僅適用第一次,在IE8刷新後不

任何ide應該是錯的? (如果我刪除緩存,然後轉到頁直接它仍然能正常工作。)

<script type='text/javascript' src='http://www.google.com/jsapi?ver=3.2.1'></script> 
<script type="text/javascript"> 
google.setOnLoadCallback(function(){ 
     jQuery(".all-map").each(function(index) { 
     var obj = jQuery.parseJSON(jQuery(this).val()); 
     var allMap = new google.maps.Map(document.getElementById(obj.mapId), { 
     zoom: obj.zoom, 
     center: new google.maps.LatLng(obj.centerLat, obj.centerLong), 
     mapTypeId: google.maps.MapTypeId.SATELLITE 
     } 
     ); 

     var locations = eval(obj.locations); 
    var infowindow = new google.maps.InfoWindow(); 
    var marker, i; 
    for (i = 0; i < locations.length; i++) { 
     marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
     map: allMap 
     }); 
    google.maps.event.addListener(marker, 'click', (function(marker, i) { 
     return function() { 
      jQuery('#'+obj.mapId).parent().siblings().eq(i).click(); 
      infowindow.setContent(locations[i][0]); 
      infowindow.open(allMap, marker); 
     } 
     })(marker, i)); 
    } 

    }); 

}); 
</script> 
+0

我想說的IE8被打破。是所有版本的IE還是隻有IE8都一樣?您是否嘗試過IE中的不同兼容性設置?什麼是頁面的緩存設置? – 2013-03-08 15:11:25

+0

確實的document.getElementById(obj.mapId)頁面流存在此腳本之前還是之後?只是認爲onload回調可能在對象存在之前觸發。 – 2013-03-08 15:22:40

+0

同樣在所有comp模式中,不知道緩存設置,但它是全新安裝 刷新後「google.maps」爲空的問題 – 2013-03-08 15:24:20

回答

0

這是一個競爭條件。當信息已經存在於IE的緩存中時,google onload事件處理程序在DOM呈現(頁面onload事件)之前運行並且地圖對象不存在於DOM中,因此document.getDocumentById找不到它。您需要等待文檔加載以及google腳本onload事件觸發。

+0

'jQuery(function(){ google.setOnLoadCallback(function(){ console.log(JSON。 stringify(google.maps)); }); ); ' 仍在重新加載時輸出「[]」,但第一次包含大量信息。 我需要等更長時間嗎? – 2013-03-08 19:35:11

0

我仍然不知道發生了什麼事,但我做了一些調整和了when與

$(document).ready(function() { 
    google.load("maps", "3", { 
     callback: initialize , 
     other_params: "sensor=false" 
    }); 
}); 

,現在,它在IE8的作品,以及,4幫助的感謝!

相關問題