2010-01-04 175 views
2

我該如何做到這一點?每次我嘗試從Google地圖加載外部JavaScript文件時,它都會使網頁崩潰,並變爲空白。動態加載外部JavaScript文件

我使用了$ JQuery.get();功能。

我正在使用JQuery將文件加載到頭部。

+2

你能發表一些代碼嗎?你如何*加載*你的文件? – CMS 2010-01-04 21:23:05

+0

你有代碼摘錄你如何做到這一點? – 2010-01-04 21:23:24

+0

你試過jQuery的getscript嗎? (http://docs.jquery.com/Ajax/jQuery.getScript) – Mottie 2010-01-04 22:22:16

回答

2

谷歌地圖可能使用document.write。這解釋了空白頁。這就是爲什麼document.write是邪惡的。

嘗試將google js文件下載到磁盤並搜索document.write。如果它在那裏,那麼你的唯一選擇是通常使用<script>標籤包含它。

1

jQuery不會(沒有回調的話)(正確)跨域Ajax請求。請參閱docs底部的註釋。

+2

OP沒有說關於使用ajax的任何內容。 – 2010-01-04 21:23:55

+0

呃,是的,他確實...... – rfunduk 2010-01-04 23:08:14

0

我相信Google Maps API在使用上有一些限制,即使您沒有立即使用它,在加載頁面時也需要鏈接到它。您還需要最初在頁面上擁有目標div(並在其正確的位置),即使它在加載時隱藏。

0

下面是我在我們的應用程序使用代碼:

<html> 
<head> 
    <title>geocoder test</title> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
    <script> 
     function jsonp(src){ 
      var s = document.createElement("script"); 
      s.charset = "UTF-8"; 
      s.src = encodeURI(src); 
      s.id = 'jsonp'; 
      document.body.appendChild(s); 
      return s; 
     }; 

     function showMap(json){ 
      var mapCanvas = document.getElementById('map_canvas'), 
       jsonp = document.getElementById('jsonp'); 
      if(json.Status.code !== 200){ 
       mapCanvas.innerHTML = 'Address not found'; 
       return false; 
      } 
      var ll = json.Placemark[0].Point.coordinates, 
       latlng = new google.maps.LatLng(ll[1], ll[0]), 
      myOptions = { 
       zoom: 16, 
       center: latlng, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }, 
      map = new google.maps.Map(mapCanvas, myOptions), 
      marker = new google.maps.Marker({ 
       position: latlng, 
       map: map 
      }); 
      jsonp.parentNode.removeChild(jsonp); 
     } 

     function getMap(address){ 
      jsonp([ 
       'http://maps.google.com/maps/geo?', 
       'q=' + address, 
       '&output=json', 
       '&sensor=false', 
       //'&key= ... place here your key if not on localhost ...', 
       '&callback=showMap' 
      ].join('')); 
     } 
    </script> 
</head> 
<body> 
    <input type="text" value="gran place, brussels"/><input type="button" onclick="getMap(this.previousSibling.value)" value="Get Map"/> 
    <div id="map_canvas" style="width:100%; height:450px"></div> 
</body> 
</html> 
0

jQuery有所做的正是這樣的功能:$.getScript。例如:

$.getScript('/script.js', function() 
{ 
    alert('Script loaded!'); 
});