Удалите блокирующий визуализацию JavaScript для карт Google
PageSpeed Insights показывает мне, что я должен удалить блокировку рендеринга для своих карт Google js. Он добавлен в содержимое cms, и это код:
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=myipcode">// <![CDATA[
// ]]></script>
<script type="text/javascript">// <![CDATA[
function initialize() {
var myLatlng = new google.maps.LatLng(mycoord1, mycoord2);
var mapOptions = {
zoom: 17,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'My Title'
});
}
Google.maps.event.adddomlistener (окно, "загрузить", инициализировать); // ]]>
Если я добавлю async="async"
в карты не загружены, но сообщение от pagespeed не отображается. Что мне делать?
4
Author: Attila Naghi, 2015-10-16
1 answers
Попробуйте выполнить следующее
<div id="map"></div>
<script type="text/javascript">
function initializeMap() {
var myLatlng = new google.maps.LatLng(mycoord1, mycoord2);
var mapOptions = {
zoom: 17,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'My Title'
});
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=myipcode&callback=initializeMap"
async defer></script>
Очень важно разместить тег внешнего скрипта ПОСЛЕ остальных, чтобы ему было к чему обратиться. Кроме того, использование асинхронности означает, что вам необходимо добавить метод обратного вызова, чтобы он мог инициализироваться.
Я бы не советовал использовать initialize
в качестве имени метода, поскольку оно довольно общее и может использоваться в других местах
6
Author: Sander Mangel, 2015-10-16 09:51:43