2012-05-30 4 views
0

Мои пользователи недавно сказали мне, что страница по умолчанию загружается намного медленнее, чем раньше. Я думаю, что это потому, что Карты загружаются сразу же по мере загрузки страницы. Есть ли способ отложить его до щелчка здесь нажатием кнопки?Выполнение javascript на загруженной странице


Основываясь на предложениях, которые я получил от ответов до сих пор, я решил назвать карту с внешнего URL-адреса. Но Javascript на загруженной странице не выполняется. Hoe я могу это исправить?

Спасибо!

Так я вызываю внешнюю страницу.

$(function() { 

    // if the function argument is given to overlay, 
    // it is assumed to be the onBeforeLoad event listener 
    $("a[rel]").overlay({ 

     mask: 'darkred', 
     effect: 'apple', 

     onBeforeLoad: function() { 

      // grab wrapper element inside content 
      var wrap = this.getOverlay().find(".contentWrap"); 

      // load the page specified in the trigger 
      wrap.load(this.getTrigger().attr("href")); 
     } 

    }); 
}); 
<!-- external page is given in the href attribute (as it should be) --> 
<a href="default.cs.asp?Process=ViewCheckinMap" rel="#overlay" style="text-decoration:none"> 
    <!-- remember that you can use any element inside the trigger --> 
    <button type="button">Show external page in overlay</button> 
</a> 

Это то, что не выполнено.

<script> 
     function initialize() { 
     var data = <%=Data%>; 
     var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453); 

     var map = new google.maps.Map(document.getElementById('map'), { 
      zoom: 2, 
      center: center, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }); 

     var markers = []; 
     for (var i = 0; i < data.users.length; i++) { 
      var location = data.users[i]; 
      var latLng = new google.maps.LatLng(location.latitude, 
       location.longitude); 
      var marker = new google.maps.Marker({ 
      position: latLng 
      }); 
      markers.push(marker); 
     } 
     var markerCluster = new MarkerClusterer(map, markers); 
     } 
     google.maps.event.addDomListener(window, 'click', initialize); 
</script> 

ответ

2

относительно вашего измененного вопроса:

удалить google.maps.event.addDomListener(window, 'click', initialize);

изменение wrap.load(this.getTrigger().attr("href")); к:

wrap.load(this.getTrigger().attr("href"), function(){initialize();}); 

это должно инициализировать вашу карту, сразу после загрузки внешнего javascript.

не проверялся :(

+0

Ошибка: инициализация не определена. – Efe

+0

, чем у вас есть ошибка в остальной части вашего javascript. ваш верхний js-код, возможно, не показывает начало вашего скрипта. конец '});' предлагает это. перед загрузкой содержимого должна быть определена ваша функция 'initialize'. –

+0

Что делать, если я просто загрузил его с другой страницы, предложенной выше. Почему вы думаете, что это не работает? – Efe

1

Это означает, что вам нужна внешняя страница, загруженная ajax.

Для этого создайте новую страницу html. И назовите его map.html. в map.html страница просто поместите свой код карты Google.

для вашей страницы по умолчанию <a href="map.htm" rel="#overlay">Click here to open the map</a>.

После этого будет загружена ваша карта. содержаниеWrap div это используя ajax способ.

<!-- overlayed element --> 
<div class="apple_overlay" id="overlay"> 
    <!-- the external content is loaded inside this tag (map.html) --> 
    <div class="contentWrap"></div> 
</div> 

Css для .contentWrap

/* container for external content. uses vertical scrollbar, if needed */ 
div.contentWrap { 
height: 400px; // it is the same height of the #map div 
overflow-y:auto; 
} 
+0

это не работало. Главная страница оленья кожа загрузить карту с новой страницы. Нет ошибок, ни малейшего представления, почему? – Efe

+0

могли бы вы предоставить ссылку на сайт? – agriboz

+0

у вас есть это '

' на странице по умолчанию – agriboz