2016-08-27 2 views
-1

Say Я использую Google Map API Иногда я не могу подключиться к первому сайту с помощью двух сайтовприоритета казненного JavaScript

<head> 
<script 
    src="https://maps.googleapis.com/maps/api/js?sensor=false&hl=zh-CN&v=3.21&callback=initMap" async defer> 
</script> 
<script 
    src="http://ditu.google.cn/maps/api/js?sensor=false&hl=zh-CN&v=3.21&callback=initMap" async defer> 
</script> 
</head> 

<body> 
<script> 
    function initMap() { 
     //something 
    } 
</script> 
</body> 

, но код все еще работает. Теперь я хочу использовать первый сайт, когда я могу подключиться к нему. Есть ли способ установить приоритет двух сайтов?

ответ

3

Вы можете загрузить сначала с помощью JavaScript document.createElement и добавить обработчик событий onerror, который устанавливает src ко второму источнику, если первый не удается:

<script> 
    var script = document.createElement('script'); 
    script.src = 'http://ditu.google.cn/maps/api/js?sensor=false&hl=zh-CN&v=3.21&callback=initMap'; 
    script.onerror = function() { 
     // if the above source fails to load, try this one 
     this.src = 'https://maps.googleapis.com/maps/api/js?sensor=false&hl=zh-CN&v=3.21&callback=initMap'; 
     this.onerror = function() { 
      console.log('Nothing loaded!'); 
     } 
    } 
    script.async = true; 
    script.defer = true; 
    document.body.appendChild(script); 
</script> 
+0

Спасибо, но функция script.onerror = ... дон Не работай. – zalver

+0

Разве это не так, чтобы поставить сценарий в голове и на тело? – zalver

+0

Создание другого элемента в функции. Зачем? – zalver

Смежные вопросы