2011-12-22 45 views
5

tôi sử dụng thẻ HTML sau đây để tải Google Maps API:Google Maps tải thư viện khối trang

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 

Tuy nhiên, nó đang chặn tất cả những gì tải đó là dưới nó trong HTML cho đến khi kịch bản được tải bởi Trình duyệt.

Có cách nào để tải không bị chặn này không?

Trả lời

3

Có, bạn có thể tải nó không đồng bộ. Kiểm tra phần tài liệu này: http://code.google.com/apis/maps/documentation/javascript/basics.html#Async

+2

Phần "Không đồng bộ" dường như đã bị xóa khỏi tài liệu ... Nhìn vào [trang này] (https://google-developers.appspot.com/maps/documentation/javascript/examples/map-simple- async), nguồn chứa mẫu tải không đồng bộ của thư viện Google Maps –

4

Mã này cung cấp cho bạn chức năng trì hoãn nhận url và tùy chọn gọi lại. Tải tập lệnh của bạn một cách không đồng bộ mà không chặn hiển thị trang. Tôi đã đặt trong một bảo vệ để nó sẽ không tải cùng một scritp hai lần, vì vậy bạn có thể ngây thơ gọi nó bao nhiêu lần tùy thích.

defer = (function() { 
    var urls = []; 

    return function (url, callback) { 
     var inc; 

     if (url && urls.indexOf(url) === -1) { 
      inc = document.createElement('script'); 
      inc.async = true; 
      inc.src = url; 
      inc.onload = callback || function() {}; 
      document.getElementsByTagName('head')[0].appendChild(inc); 
     } 
    } 
}()); 

defer('http://maps.google.com/maps/api/js?sensor=false'); 

Tính năng này hoạt động đối với mọi javascript bên ngoài không tải xuống không đồng bộ.

+0

Cảm ơn mẹo tuyệt vời này, nhưng tôi muốn sử dụng cách "chính thức" trong trường hợp này là –

+0

Điều tương tự. Tôi chỉ cung cấp cho bạn một chức năng có thể tải các url tùy ý thay vì bản đồ google cụ thể. – Munter

+0

@Bạn có gặp phải bất kỳ tình huống nào khi tải không đồng bộ không thành công đối với một số tập lệnh không? tôi đang đặt câu hỏi này liên quan đến dòng cuối cùng của bạn trong câu trả lời của bạn. –